音楽ily 1327.Pinary

609 ワード

http://soj.sysu.edu.cn/show_problem.php?pid=1327
フィボナッチの数列はいくつかの異なるフィボナッチの数で構成されていることが分かりますので、この数を差し引いたらnは0以下となります.この数は含まれていません.0は出力されます.逆に1は出力されます.
cinで、coutは0.13 sで、scanfとputで0.01 sだけです.....この違い...
#include <cstdio>
int main()
{
	int fib[50] = {1,1};
	for(int i = 2;i < 45;i++)
		fib[i] = fib[i-1]+fib[i-2];
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n;
		scanf("%d",&n);
		int p = 1;
		while(n >= fib[p]) ++p;
		while(--p)	n-fib[p] < 0 ? putchar('0') : (putchar('1'),n -= fib[p]);
		puts("");
	}
}