※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。


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).