Wannafly挑战赛9 C-列一列

描述

小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;
            }    
        }
    }
 }
posted @ 2018-02-03 00:27  极限之旅  阅读(108)  评论(0编辑  收藏  举报