#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
const int MAX = 1000000000;
void solve_case(vector<int>* fib, vector<int>::iterator begin, vector<int>::iterator end) {
int n, m;
scanf("%d", &n);
for (vector<int>::iterator it = begin; it != end; ++it) {
m = *it;
if (n % m == 0 && binary_search(begin, end, n / m)) {
printf("TAK\n");
return;
}
}
printf("NIE\n");
}
vector<int>* get_fib() {
vector<int>* fib = new vector<int>();
int a = 1, b = 1, c;
fib->push_back(a);
do {
fib->push_back(b);
c = a + b;
a = b;
b = c;
} while (b <= MAX);
return fib;
}
int main() {
vector<int>* fib = get_fib();
vector<int>::iterator begin = fib->begin();
vector<int>::iterator end = fib->end();
int cases;
scanf("%d", &cases);
for (int i = 0; i < cases; ++i) {
solve_case(fib, begin, end);
}
delete fib;
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 | #include <cstdio> #include <vector> #include <algorithm> using namespace std; const int MAX = 1000000000; void solve_case(vector<int>* fib, vector<int>::iterator begin, vector<int>::iterator end) { int n, m; scanf("%d", &n); for (vector<int>::iterator it = begin; it != end; ++it) { m = *it; if (n % m == 0 && binary_search(begin, end, n / m)) { printf("TAK\n"); return; } } printf("NIE\n"); } vector<int>* get_fib() { vector<int>* fib = new vector<int>(); int a = 1, b = 1, c; fib->push_back(a); do { fib->push_back(b); c = a + b; a = b; b = c; } while (b <= MAX); return fib; } int main() { vector<int>* fib = get_fib(); vector<int>::iterator begin = fib->begin(); vector<int>::iterator end = fib->end(); int cases; scanf("%d", &cases); for (int i = 0; i < cases; ++i) { solve_case(fib, begin, end); } delete fib; return 0; } |
English