#include <cstdio>
#include <cstring>
int main()
{
char cstr[19];
scanf("%s", cstr);
long long mod = 1;
long long cval = 0;
for(char* c = cstr; *c >= '0' && *c <= '9'; ++c) {
mod *= 10;
cval *= 10;
cval += (*c)-'0';
}
if (mod < 1000) {
mod = 1000;
}
bool done = false;
long long F0 = 0;
long long F1 = 1;
long long F2;
long long limit = mod + mod/2;
long long modSm = 1000;
if (F0 != cval && F1 != cval) {
for (long long i = 2; i < limit; ++i) {
F2 = (F0 + F1) % mod;
if (F2 == cval) {
printf("%lld\n", i + ((i > 100) ? 0 : limit));
done = true;
break;
}
while (F2 % modSm == cval % modSm) {
modSm *= 10;
}
if (i >= (3*modSm/2)) {
break;
}
F0 = F1;
F1 = F2;
}
if (!done) {
printf("NIE\n");
}
} else {
printf("%lld\n", limit + ((F0 == cval) ? 0 : 1));
}
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 | #include <cstdio> #include <cstring> int main() { char cstr[19]; scanf("%s", cstr); long long mod = 1; long long cval = 0; for(char* c = cstr; *c >= '0' && *c <= '9'; ++c) { mod *= 10; cval *= 10; cval += (*c)-'0'; } if (mod < 1000) { mod = 1000; } bool done = false; long long F0 = 0; long long F1 = 1; long long F2; long long limit = mod + mod/2; long long modSm = 1000; if (F0 != cval && F1 != cval) { for (long long i = 2; i < limit; ++i) { F2 = (F0 + F1) % mod; if (F2 == cval) { printf("%lld\n", i + ((i > 100) ? 0 : limit)); done = true; break; } while (F2 % modSm == cval % modSm) { modSm *= 10; } if (i >= (3*modSm/2)) { break; } F0 = F1; F1 = F2; } if (!done) { printf("NIE\n"); } } else { printf("%lld\n", limit + ((F0 == cval) ? 0 : 1)); } return 0; } |
English