#include <iostream> using namespace std; void fib(unsigned long int *f); int main() { int t; cin >> t; unsigned long int f[44]; f[43] = 1000000001; fib(f); int j, i, liczba, stala_liczba; int ilosc; for(int p = 0; p<t; p++) { liczba; cin >> liczba; stala_liczba = liczba; j = i = 0; bool jest = false, nie_jest = false; ilosc = 1; if(liczba == 0) { cout << "TAK\n"; continue; } while(f[i] <= liczba) i++; i--; if(liczba == f[i]) { cout << "TAK\n"; continue; } i = 1; while(!jest && !nie_jest) { while(f[i] < liczba) { liczba = stala_liczba; if(liczba % f[i] == 0) { j = i; //j++; liczba /= f[i]; ilosc = 1; while(f[j] <= liczba) { if(liczba % f[j] == 0 && liczba / f[j] == 1 && ilosc < 2) { ilosc++; jest = true; } if(ilosc >= 2) { nie_jest = true; break; } j++; } } i++; } nie_jest = true; } if(jest) cout << "TAK\n"; else cout << "NIE\n"; } return 0; } void fib(unsigned long int *tab) { unsigned long long f,f0,f1; int i; f0 = 0; f1 = 1; for(i = 0; i < 45; i++) if(i > 1) { f = f0 + f1; tab[i-2] = f; f0 = f1; f1 = f; } else { f = i; } }
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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | #include <iostream> using namespace std; void fib(unsigned long int *f); int main() { int t; cin >> t; unsigned long int f[44]; f[43] = 1000000001; fib(f); int j, i, liczba, stala_liczba; int ilosc; for(int p = 0; p<t; p++) { liczba; cin >> liczba; stala_liczba = liczba; j = i = 0; bool jest = false, nie_jest = false; ilosc = 1; if(liczba == 0) { cout << "TAK\n"; continue; } while(f[i] <= liczba) i++; i--; if(liczba == f[i]) { cout << "TAK\n"; continue; } i = 1; while(!jest && !nie_jest) { while(f[i] < liczba) { liczba = stala_liczba; if(liczba % f[i] == 0) { j = i; //j++; liczba /= f[i]; ilosc = 1; while(f[j] <= liczba) { if(liczba % f[j] == 0 && liczba / f[j] == 1 && ilosc < 2) { ilosc++; jest = true; } if(ilosc >= 2) { nie_jest = true; break; } j++; } } i++; } nie_jest = true; } if(jest) cout << "TAK\n"; else cout << "NIE\n"; } return 0; } void fib(unsigned long int *tab) { unsigned long long f,f0,f1; int i; f0 = 0; f1 = 1; for(i = 0; i < 45; i++) if(i > 1) { f = f0 + f1; tab[i-2] = f; f0 = f1; f1 = f; } else { f = i; } } |