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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<sstream>
#include<cmath>

using namespace std;

unsigned long long liczba;
int dlugosc;

unsigned long long convertStrToUll(string s)
{
	char tab[dlugosc];
	
	
	s.copy(tab, string::npos);
	
	char * pEnd;
	
	return strtoull(tab, &pEnd, 10);
}
string fibonacci(unsigned long long a, unsigned long long b)
{
	unsigned long long suma = a + b;
	
    stringstream ss;
    ss << suma;  // or any other type
    string result=ss.str();
    if(result.length() > dlugosc)
    result = result.substr(result.length() - dlugosc, string::npos);
	return result;
}



int main()
{
	
	string s;
	
	cin >> s;
	
dlugosc = s.length();
	
	liczba = convertStrToUll(s);
		
	
	unsigned long long a = 0;
	unsigned long long b = 1;
	unsigned long long numerIteracji = 1;
	unsigned long long suma = 0;
	
	while(true)
	{
		numerIteracji++;
		string suma_s = fibonacci(a, b);
		if(suma_s == s)
		{
			cout << numerIteracji;
			return 0;
		}
		a = b;
		b = convertStrToUll(suma_s);
		
		if(numerIteracji > 1000000)
		{
			break;
		}
			
	}
	cout << "NIE";
	

	return 0;
}