#include<iostream> #include<cstdlib> #include<cstring> #include<sstream> #include<cmath> using namespace std; unsigned long long liczba; int dlugosc; unsigned long long convertStrToUll(string s) { char tab[dlugosc]; s.copy(tab, string::npos); char * pEnd; return strtoull(tab, &pEnd, 10); } string fibonacci(unsigned long long a, unsigned long long b) { unsigned long long suma = a + b; stringstream ss; ss << suma; // or any other type string result=ss.str(); if(result.length() > dlugosc) result = result.substr(result.length() - dlugosc, string::npos); return result; } int main() { string s; cin >> s; dlugosc = s.length(); liczba = convertStrToUll(s); unsigned long long a = 0; unsigned long long b = 1; unsigned long long numerIteracji = 1; unsigned long long suma = 0; while(true) { numerIteracji++; string suma_s = fibonacci(a, b); if(suma_s == s) { cout << numerIteracji; return 0; } a = b; b = convertStrToUll(suma_s); if(numerIteracji > 1000000) { break; } } cout << "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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #include<iostream> #include<cstdlib> #include<cstring> #include<sstream> #include<cmath> using namespace std; unsigned long long liczba; int dlugosc; unsigned long long convertStrToUll(string s) { char tab[dlugosc]; s.copy(tab, string::npos); char * pEnd; return strtoull(tab, &pEnd, 10); } string fibonacci(unsigned long long a, unsigned long long b) { unsigned long long suma = a + b; stringstream ss; ss << suma; // or any other type string result=ss.str(); if(result.length() > dlugosc) result = result.substr(result.length() - dlugosc, string::npos); return result; } int main() { string s; cin >> s; dlugosc = s.length(); liczba = convertStrToUll(s); unsigned long long a = 0; unsigned long long b = 1; unsigned long long numerIteracji = 1; unsigned long long suma = 0; while(true) { numerIteracji++; string suma_s = fibonacci(a, b); if(suma_s == s) { cout << numerIteracji; return 0; } a = b; b = convertStrToUll(suma_s); if(numerIteracji > 1000000) { break; } } cout << "NIE"; return 0; } |