#define NDEBUG
#include <cassert>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <queue>
#include <string>
#include <vector>
using namespace std;
#define TRACE(x) cerr<<"# "#x<<endl;
#define DEBUG(x) cerr<<#x<<" = "<<(x)<<endl;
typedef unsigned long long ULL;
typedef long long LL;
const int INF = 0x7FFFFFFF;
int fib[] = {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,
1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733};
const int fib_size = sizeof(fib)/sizeof(fib[0]);
int f(int x) {
for(auto i:fib) {
if(i == x)
return 1;
}
return 0;
}
int main() {
int t;
scanf("%d", &t);
for(int i=0; i<t; ++i) {
int x,a,b,c=0;
scanf("%d", &x);
if(x <= fib[fib_size-1]) {
for(int k=2; k<fib_size ;++k) {
a = x / fib[k];
if((a*fib[k]==x) && f(a)) {
c=1;
break;
}
}
}
printf((c)?"TAK\n":"NIE\n");
}
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 57 | #define NDEBUG #include <cassert> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <sstream> #include <algorithm> #include <queue> #include <string> #include <vector> using namespace std; #define TRACE(x) cerr<<"# "#x<<endl; #define DEBUG(x) cerr<<#x<<" = "<<(x)<<endl; typedef unsigned long long ULL; typedef long long LL; const int INF = 0x7FFFFFFF; int fib[] = {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040, 1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733}; const int fib_size = sizeof(fib)/sizeof(fib[0]); int f(int x) { for(auto i:fib) { if(i == x) return 1; } return 0; } int main() { int t; scanf("%d", &t); for(int i=0; i<t; ++i) { int x,a,b,c=0; scanf("%d", &x); if(x <= fib[fib_size-1]) { for(int k=2; k<fib_size ;++k) { a = x / fib[k]; if((a*fib[k]==x) && f(a)) { c=1; break; } } } printf((c)?"TAK\n":"NIE\n"); } return 0; } |
English