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

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%20173
Problem 173 「最大100万個のタイルを使っていくつの穴あき正方形laminaを作れるか?」 †
翻訳では以下と書いてますが100万を含みます。
100万くらいなら全探索で片が付きます。
もう少し数字が大きくなるならjの下限値を2分探索で求めます。


#include<stdio.h>
#include<string.h>
const int LIMIT=1000000;

int main(){
	int ans=0;
	for(__int64 i=3;;i++){
		if(4*i-4>LIMIT)break;
		for(__int64 j=i-2;j>=1;j-=2){
			if(i*i-j*j>LIMIT)break;
			ans++;
		}
	}

	printf("%d\n",ans);
}
最終更新:2016年01月09日 04:22