题目:点击打开链接
代码:
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
__int64 b[200]={1,2,3,5,8};//找规律
while(t--) //斐波那契的数组要用__int64
{
__int64 a;
scanf("%I64d",&a);
int i;
__int64 sum=0;
for(i=0;i<=200;i++)
{
if(i>=2)b[i]=b[i-1]+b[i-2];
sum=sum+b[i];
if(a<sum)break;
}
if(a>=5)
printf("%d\n",i);
else if(a==4)printf("2\n");
else if(a==3)printf("2\n");
else if(a==2)printf("1\n");
else if(a==1)printf("1\n"); //还可以优化
}
}