描述
小W在计算一个数列{An},其中A1=1,A2=2,An+2=An+1+An。尽管他计算非常精准,但很快他就弄混了自己的草稿纸,他找出了一些他计算的结果,但他忘记了这些都是数列中的第几项。
输入
每行包括数列中的一项Ak(k<=100000)。
总行数T<=30。
输出
对于每一项Ak,输出一行包括一个正整数k表示输入中数是数列的第几项。
样例输入
2
3
5
8
13
样例输出
2
3
4
5
6
真心觉得这个斐波那契显得不那么友好,路过的大神多指点啊
#include <stdio.h>
#include <string.h>
#define ull unsigned long long
#define N 100001
ull a[N]={1,1};
char b[N];
int main()
{
ull i,j,s;
for(i=2;i<N;i++)
{
a[i]=a[i-1]+a[i-2];
}
while(~scanf("%s",b))
{
s=0;
j=strlen(b);
for(i=0;i<j;i++)
{
s=s*10+b[i]-'0';
}
for(i=0;i<N;i++)
{
if(a[i]==s)
{
printf("%d\n",i);
break;
}
}
}
}