#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; } |
English