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