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
51
52
53
54
55
#include <iostream>

using namespace std;

long long int convert(string str, long long int & mnoz)
{
    bool t=false;
    int maxim=str.size()<18?str.size():17;
    long long int num=0;
    for(int i=str.size()-maxim;i<str.size();i++)
    {
        if(t==false)
        {
            if(str[i]!='0') t=true;
        }
        if(t==true)
        {
            num*=10;
            num+=str[i]-48;
            mnoz*=10;
        }
    }
    return num;
}


int main()
{
    long long int mnoz=1;
    string tmp; // brzydkie rozwi¹zanie
    cin >> tmp;
    long long int result=0;
    long long int test=convert(tmp,mnoz);
    long long int fib1=0, fib2=1, fib3;
    int counter=0;
    mnoz/=10;
    for(long long int i=0;i<45000000;i++)
    {
        fib3=fib1+fib2;
        fib1=fib2;
        fib2=fib3;
        if(fib3>mnoz)
        {
            fib3=fib3%(mnoz*10);
            if(fib3==test)
            {
                result =i+2;
                break;
            }
        }
    }
    if (result >0) cout << result << endl;
    else cout << "NIE" << endl;
    return 0;
}