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
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cstring>

using namespace std;

int main()
{
	auto C = 0llu;
	auto mod = 1llu;
	char buff[20];
	scanf("%s", buff);
	auto numberCount = strlen(buff);
	for(decltype(numberCount) i = 1; i <= numberCount; ++i)
		mod *= 10llu;
	sscanf(buff, "%llu", &C);
	
	auto f0 = 0llu;
	auto f1 = 1llu;
	auto k = 0llu;
	auto lim = mod / 10llu;
	while(f0 <= lim)
	{
		auto next = f0 + f1;
		f0 = f1;
		f1 = next;
		++k;
	}

	auto prev = f0 % mod;
	auto curr = f1 % mod;
	do
	{
		if(prev == C)
		{
			printf("%llu", k);
			return 0;
		}
		auto next = (prev + curr) % mod;
		prev = curr;
		curr = next;
		++k;
	} while(!(prev == f0 && curr == f1));
	
	puts("NIE");
	
	return 0;
}