Problem 85 「長方形の数え上げ」 †
注意深く数えると, 横が3, 縦が2の長方形の格子には, 18個の長方形が含まれている.
ぴったり2,000,000個の長方形を含むような長方形の格子は存在しない. 一番近い解を持つような格子の面積を求めよ.
解法
w<=Hとしても一般性を失いません。
wを定めたら条件を満たすhは2次方程式の解となるのでその近辺の整数を探すだけです。
hanni(X,X1):-
between(-2,2,D),
X1 is X+D.
calc([Sa,H1,W,S]):-
between(1,3000,W),
D is (8000*1000)//(W*W+W),
D>0,
H is floor((-1+sqrt(1+D*4))/2),
(H<W->!,fail;true),
hanni(H,H1),
H1>0,
Sa is abs(2000*1000-(H1*(H1+1)*W*(W+1))//4),
S is H1*W.
main85:-
findall(E,calc(E),All),
sort(All,[Ans|_]),
write(Ans).
最終更新:2014年03月03日 16:25