#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"); } } |