1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include<cstdio>

int main()
{
    int a, d;
    bool p=true;
    scanf("%d", &a);
    if (a>99&&a<1000)
    {
        d = (a-100)%8;
        if (d==0||d==2)
            p=false;
    }
    if (a>999&&a<10000)
    {
        d = (a-1002)%16;
        if (d==0||d==2||d==4||d==10||d==12)
            p=false;
    }
    if (a>9999)
    {
        d=(a-9998)%32;
        if (d==0 || d==4 || d==6 || d==8 || d==12 || d==14 || d==16 || d==22 || d==24 || d==28 || d==30)
            p=false;
    }
    if(p)
    {
        long long n, m, i;
        n=15;
        m=10;
        while(a>=m)
        {
            n*=10; m*=10;
        }
        int *fib = new int [n];
        fib[0]=0; fib[1]=1;
        for(i=2; i <= n; i++)
        {
            fib[i]=(fib[i-1]+fib[i-2])%m;
            if (fib[i]==a)
            {
                printf("%lld", i);
                break;
            }
        }
    }
    else printf("NIE");

    return 0;
}