#include <iostream> #include <algorithm> #include <string> #include <vector> #include <fstream> using namespace std; unsigned long long int n, ile, dziel, fib1, fib2, tmp, odj=1000000000; int main() { ios_base::sync_with_stdio(0); cin>>n; odj=odj*1000000000; if(n>=odj){ dziel=odj*10; }else if(n>odj/10){ dziel=odj; }else if(n>odj/100){ dziel=odj/10; }else if(n>odj/1000){ dziel=odj/100; }else if(n>odj/10000){ dziel=odj/1000; }else if(n>odj/100000){ dziel=odj/10000; }else if(n>odj/1000000){ dziel=odj/100000; }else if(n>odj/10000000){ dziel=odj/1000000; }else if(n>odj/100000000){ dziel=odj/10000000; }else if(n>odj/1000000000){ dziel=odj/100000000; }else if(n>1000000000){ dziel=odj/1000000000; }else if(n>100000000){ dziel=1000000000; }else if(n>10000000){ dziel=100000000; }else if(n>1000000){ dziel=10000000; }else if(n>100000){ dziel=1000000; }else if(n>10000){ dziel=100000; }else if(n>1000){ dziel=10000; }else if(n>100){ dziel=1000; }else if(n>10){ dziel=100; }else if(n>1){ dziel=10; } fib1=0; fib2=1; ile=2*dziel; if(ile>100000000){ ile=100000000; } for(int i=1; i<ile; i++){ tmp=fib1+fib2; if(tmp>odj){ tmp=tmp-odj; } fib1=fib2; fib2=tmp; if(tmp%dziel==n){ cout<<i+1; return 0; } } cout<<"NIE"; return 0; }
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 77 78 79 80 81 82 83 84 | #include <iostream> #include <algorithm> #include <string> #include <vector> #include <fstream> using namespace std; unsigned long long int n, ile, dziel, fib1, fib2, tmp, odj=1000000000; int main() { ios_base::sync_with_stdio(0); cin>>n; odj=odj*1000000000; if(n>=odj){ dziel=odj*10; }else if(n>odj/10){ dziel=odj; }else if(n>odj/100){ dziel=odj/10; }else if(n>odj/1000){ dziel=odj/100; }else if(n>odj/10000){ dziel=odj/1000; }else if(n>odj/100000){ dziel=odj/10000; }else if(n>odj/1000000){ dziel=odj/100000; }else if(n>odj/10000000){ dziel=odj/1000000; }else if(n>odj/100000000){ dziel=odj/10000000; }else if(n>odj/1000000000){ dziel=odj/100000000; }else if(n>1000000000){ dziel=odj/1000000000; }else if(n>100000000){ dziel=1000000000; }else if(n>10000000){ dziel=100000000; }else if(n>1000000){ dziel=10000000; }else if(n>100000){ dziel=1000000; }else if(n>10000){ dziel=100000; }else if(n>1000){ dziel=10000; }else if(n>100){ dziel=1000; }else if(n>10){ dziel=100; }else if(n>1){ dziel=10; } fib1=0; fib2=1; ile=2*dziel; if(ile>100000000){ ile=100000000; } for(int i=1; i<ile; i++){ tmp=fib1+fib2; if(tmp>odj){ tmp=tmp-odj; } fib1=fib2; fib2=tmp; if(tmp%dziel==n){ cout<<i+1; return 0; } } cout<<"NIE"; return 0; } |