#include <stdio.h> using namespace std; long long int cyfry; long long int k_cyfry; int ile_cyfr = 0; long long int modulo = 1; long long int fib1, fib2; int main() { scanf("%lld", &cyfry); k_cyfry = cyfry; while(k_cyfry > 0) { ile_cyfr++; k_cyfry /= 10; } for(int i = 0; i < ile_cyfr; i++) modulo *= 10; if(cyfry == 0) printf("0\n"); else { fib1 = 0; fib2 = 1; for(int k = 2; k <= 20000000; k++) { fib2 = fib1+fib2; fib2 %= modulo; fib1 = fib2-fib1; while(fib1 < 0) fib1 += modulo; fib1 %= modulo; if(fib2 == cyfry) { printf("%d\n", k); break; } if(k == 20000000) printf("NIE\n"); } } 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 | #include <stdio.h> using namespace std; long long int cyfry; long long int k_cyfry; int ile_cyfr = 0; long long int modulo = 1; long long int fib1, fib2; int main() { scanf("%lld", &cyfry); k_cyfry = cyfry; while(k_cyfry > 0) { ile_cyfr++; k_cyfry /= 10; } for(int i = 0; i < ile_cyfr; i++) modulo *= 10; if(cyfry == 0) printf("0\n"); else { fib1 = 0; fib2 = 1; for(int k = 2; k <= 20000000; k++) { fib2 = fib1+fib2; fib2 %= modulo; fib1 = fib2-fib1; while(fib1 < 0) fib1 += modulo; fib1 %= modulo; if(fib2 == cyfry) { printf("%d\n", k); break; } if(k == 20000000) printf("NIE\n"); } } return 0; } |