#include <iostream> #include <algorithm> #include <cstring> using namespace std; string suma( string a, string b ) { string c; int j = b.size() - 1; int l = 0; if( a.size() < b.size() ) { string x = a; a = b; b = x; } //cout << a << " " << b << "\n"; string g; for( int i = 0; i < a.size() - b.size(); i ++ ) { g.push_back('0'); } if( a.size() != b.size() ) b = g + b; //cout << g << "\n"; for( int i = a.size() - 1; i >= 0; i -- ) { int r = a[i] + b[i] - '0' - '0' + l; //if( a == "13" ) cout << r << " "; if( r < 10 ) { char p = r + '0'; c.push_back(p); l = 0; } else { char p = r%10 + '0'; c.push_back(p); l = r/10; } } //cout << c << "\n"; if( l > 0 ) { char p = l + '0'; c.push_back(p); } reverse(c.begin(),c.end()); return c; } int check( string a, string b ) { bool flag = true; int j = b.size() - 1; for( int i = a.size() - 1; i >= 0; i -- ) { if( a[i] != b[j] ) { //cout << a[i] << " " << b[j] << "\n"; flag = false; break; } j --; //if( j == -1 ) break; } return flag; } int main() { ios_base::sync_with_stdio(0); string n; cin >> n; string a = "0", b = "1"; if( check(n,a) == true ) { cout << 0 << "\n"; return 0; } else if( check(n,b) == true ) { cout << 1 << "\n"; return 0; } for( int i = 0; i < 10000; i ++ ) { string d = suma(a,b); a = b; b = d; //cout << d << "\n"; if( check(n,b) == true ) { cout << i + 2 << "\n"; //cout << b << "\n"; return 0; } //cout << b << "\n"; } cout << "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 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 85 86 87 88 89 90 91 92 93 94 95 | #include <iostream> #include <algorithm> #include <cstring> using namespace std; string suma( string a, string b ) { string c; int j = b.size() - 1; int l = 0; if( a.size() < b.size() ) { string x = a; a = b; b = x; } //cout << a << " " << b << "\n"; string g; for( int i = 0; i < a.size() - b.size(); i ++ ) { g.push_back('0'); } if( a.size() != b.size() ) b = g + b; //cout << g << "\n"; for( int i = a.size() - 1; i >= 0; i -- ) { int r = a[i] + b[i] - '0' - '0' + l; //if( a == "13" ) cout << r << " "; if( r < 10 ) { char p = r + '0'; c.push_back(p); l = 0; } else { char p = r%10 + '0'; c.push_back(p); l = r/10; } } //cout << c << "\n"; if( l > 0 ) { char p = l + '0'; c.push_back(p); } reverse(c.begin(),c.end()); return c; } int check( string a, string b ) { bool flag = true; int j = b.size() - 1; for( int i = a.size() - 1; i >= 0; i -- ) { if( a[i] != b[j] ) { //cout << a[i] << " " << b[j] << "\n"; flag = false; break; } j --; //if( j == -1 ) break; } return flag; } int main() { ios_base::sync_with_stdio(0); string n; cin >> n; string a = "0", b = "1"; if( check(n,a) == true ) { cout << 0 << "\n"; return 0; } else if( check(n,b) == true ) { cout << 1 << "\n"; return 0; } for( int i = 0; i < 10000; i ++ ) { string d = suma(a,b); a = b; b = d; //cout << d << "\n"; if( check(n,b) == true ) { cout << i + 2 << "\n"; //cout << b << "\n"; return 0; } //cout << b << "\n"; } cout << "NIE\n"; return 0; } |