描述
小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 ",i); break; } } } }