题目链接:http://acm.ocrosoft.com/problem.php?cid=1172&pid=7
题目描述
Gavin听说最近斐波那契数列很流行,所以好奇的Gavin在了解到斐波那契数列就是1 1 2 3 5….后自己想了一个数列:暂且叫他Gavin的斐波那契数列吧。
Gavin的斐波那契数列是这样的一个数列:他是这么一个数列:1 2 2 4 8 32…….也就是说,f(i)=f(i-1)*f(i-2)。(i>=3)。现在,Gavin告诉你一个数字n 聪明的你能快速说出在那个位置上的数是什么并且把他用二进制形式表现出来吗?例如:Gavin告诉你一个数字3那么这个位置的数字是2用二进制表示就是10所以,你可以自豪的告诉他是:10.(具体情况看样例)。
输入
输出
每组数据输出一行为第n个位置上的数字的二进制表现形式。
样例输入
4
1
2
3
4
样例输出
1
10
10
100
0的个数遵从从0开始的斐波那契数列规律
#include<bits/stdc++.h>
using namespace std;
int f(int n){
if(n==1){
return 0;
}
if(n==2){
return 1;
}else{
return f(n-1)+f(n-2);
}
}
int main(){
int T,n;
cin>>T;
while(T--){
cin>>n;
cout<<"1";
for(int i=0;i<f(n);i++){
cout<<"0";
}
cout<<endl;
}
return 0;
}