プロジェクトオイラー問85

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2085
Problem 85 「長方形の数え上げ」 †
マス目で区切られた長方形の中に長方形は何個あるか?
内部の長方形の数が200万に最も近いときの長方形の面積を答えよ。

解法
探索範囲が狭いので全探索で片が付きます。
#include<stdio.h>
const int LIMIT=2000*1000;
int main(){
	int d=LIMIT;
	int ans;
 	for(int n=1;;n++){
		for(int m=1;m<=n;m++){
			int r=m*(m+1)*n*(n+1)/4;
			
			int d1=LIMIT>r?LIMIT-r:r-LIMIT;
			if(d1<d){
				d=d1;
				ans=m*n;
			}
 			if(r>LIMIT)break;
		}
		int r=n*(n+1)/2;
		if(r>LIMIT)break;
 	}
	printf("ans=%d",ans);
}
最終更新:2014年12月13日 14:34