#include <stdio.h>
#include <vector>
using namespace std;
int main(int argc, char* argv[]) {
long MAX = 1000000000l;
vector<long> liczby;
vector<size_t> indeksy;
vector<long> iloczyny;
liczby.push_back(0); indeksy.push_back(iloczyny.size());
liczby.push_back(1); indeksy.push_back(iloczyny.size());
liczby.push_back(1); indeksy.push_back(iloczyny.size());
while (liczby.back() < MAX) {
size_t size = liczby.size();
long next = liczby[size - 2] + liczby[size - 1];
liczby.push_back(next);
indeksy.push_back(iloczyny.size());
for (size_t i = 3 ; i < liczby.size() ; i++) {
long iloczyn = next * liczby[i];
if(iloczyn > MAX) {
break;
}
iloczyny.push_back(iloczyn);
}
}
indeksy.push_back(iloczyny.size());
long wejscie;
int t;
scanf("%d\n", &t);
while (t--) {
scanf("%ld\n", &wejscie);
bool jest = false;
if (wejscie == 0) jest = true;
else if (wejscie == 1) jest = true;
else if (wejscie > 0) {
for (size_t i = liczby.size() - 1; i > 2 ; i--) {
long liczba = liczby[i];
if (liczba > wejscie) continue;
if (wejscie == liczba) { jest = true; break; }
if (wejscie % liczba == 0) {
for (size_t j = indeksy[i] ; j < indeksy[i+1] ; j++) {
if (wejscie == iloczyny[j]) { jest = true; break; }
}
break;
}
}
}
if (jest) printf("TAK"); else printf("NIE");
if (t) printf("\n");
}
}
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 <stdio.h> #include <vector> using namespace std; int main(int argc, char* argv[]) { long MAX = 1000000000l; vector<long> liczby; vector<size_t> indeksy; vector<long> iloczyny; liczby.push_back(0); indeksy.push_back(iloczyny.size()); liczby.push_back(1); indeksy.push_back(iloczyny.size()); liczby.push_back(1); indeksy.push_back(iloczyny.size()); while (liczby.back() < MAX) { size_t size = liczby.size(); long next = liczby[size - 2] + liczby[size - 1]; liczby.push_back(next); indeksy.push_back(iloczyny.size()); for (size_t i = 3 ; i < liczby.size() ; i++) { long iloczyn = next * liczby[i]; if(iloczyn > MAX) { break; } iloczyny.push_back(iloczyn); } } indeksy.push_back(iloczyny.size()); long wejscie; int t; scanf("%d\n", &t); while (t--) { scanf("%ld\n", &wejscie); bool jest = false; if (wejscie == 0) jest = true; else if (wejscie == 1) jest = true; else if (wejscie > 0) { for (size_t i = liczby.size() - 1; i > 2 ; i--) { long liczba = liczby[i]; if (liczba > wejscie) continue; if (wejscie == liczba) { jest = true; break; } if (wejscie % liczba == 0) { for (size_t j = indeksy[i] ; j < indeksy[i+1] ; j++) { if (wejscie == iloczyny[j]) { jest = true; break; } } break; } } } if (jest) printf("TAK"); else printf("NIE"); if (t) printf("\n"); } } |
English