#include <cstdio> int fibs[] = {1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657}; int size = sizeof(fibs) / sizeof(int); bool is_fib(int n) { for(int i = 0; i < size; ++i) if(fibs[i] == n) return true; return false; } bool is_multiple_of_fibs(int n) { if(n == 0) return true; for(int i = 0; i < size; ++i) { int fib = fibs[i], div = n / fib; if(fib * div == n && is_fib(div)) return true; } return false; } int main() { int t, n; scanf("%d", &t); while(t--) { scanf("%d", &n); if(is_multiple_of_fibs(n)) printf("TAK\n"); else printf("NIE\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 | #include <cstdio> int fibs[] = {1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657}; int size = sizeof(fibs) / sizeof(int); bool is_fib(int n) { for(int i = 0; i < size; ++i) if(fibs[i] == n) return true; return false; } bool is_multiple_of_fibs(int n) { if(n == 0) return true; for(int i = 0; i < size; ++i) { int fib = fibs[i], div = n / fib; if(fib * div == n && is_fib(div)) return true; } return false; } int main() { int t, n; scanf("%d", &t); while(t--) { scanf("%d", &n); if(is_multiple_of_fibs(n)) printf("TAK\n"); else printf("NIE\n"); } } |