#include <cstdio> #include <cstring> #include <math.h> using namespace std; long long a, b=0, c=1, okr, i, mod, wzor=0; long long potega10 (short int x) { long long pot=1; for (short int k=0; k<x; k++) pot*=10; return pot; } int main() { char ciag[20]; scanf ("%s", ciag); short int l=strlen (ciag); switch (l) { case 1: okr=60; break; case 2: okr=300; break; default: okr=15*potega10 (l-1); break; } for (short int j=l-1; j>=0; j--) { wzor+=(ciag[j]-'0')*potega10 (l-1-j); } mod=pow (10, l); for (i=2; i<okr+2&&c!=wzor; i++) { a=b; b=c; c=(a+b)%mod; } i--; if (c==wzor) { if (ciag[0]=='0'&&c<mod) i+=okr; printf ("%lld", i); } else printf ("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 | #include <cstdio> #include <cstring> #include <math.h> using namespace std; long long a, b=0, c=1, okr, i, mod, wzor=0; long long potega10 (short int x) { long long pot=1; for (short int k=0; k<x; k++) pot*=10; return pot; } int main() { char ciag[20]; scanf ("%s", ciag); short int l=strlen (ciag); switch (l) { case 1: okr=60; break; case 2: okr=300; break; default: okr=15*potega10 (l-1); break; } for (short int j=l-1; j>=0; j--) { wzor+=(ciag[j]-'0')*potega10 (l-1-j); } mod=pow (10, l); for (i=2; i<okr+2&&c!=wzor; i++) { a=b; b=c; c=(a+b)%mod; } i--; if (c==wzor) { if (ciag[0]=='0'&&c<mod) i+=okr; printf ("%lld", i); } else printf ("NIE"); return 0; } |