#include <set>
#include <cstdio>
#define MILIARD 1 ## 000 ## 000 ## 000
int main()
{
std::set<int> ciag;
int a = 1, b = 2, fib = a+b;
int testow, n;
bool daSie;
ciag.insert(1);
ciag.insert(2);
while (fib<=MILIARD)
{
ciag.insert(fib);
a = b;
b = fib;
fib += a;
}
scanf("%d", &testow);
while(testow--)
{
daSie = false;
scanf("%d", &n);
if (n==0)
daSie = true;
for (std::set<int>::iterator it=ciag.begin();it!=ciag.end();it++)
{
fib = *it;
if (fib * fib > n)
break;
else if (n%fib == 0 && ciag.find(n/fib)!=ciag.end())
{
daSie = true;
break;
}
}
puts(daSie? "TAK": "NIE");
}
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 | #include <set> #include <cstdio> #define MILIARD 1 ## 000 ## 000 ## 000 int main() { std::set<int> ciag; int a = 1, b = 2, fib = a+b; int testow, n; bool daSie; ciag.insert(1); ciag.insert(2); while (fib<=MILIARD) { ciag.insert(fib); a = b; b = fib; fib += a; } scanf("%d", &testow); while(testow--) { daSie = false; scanf("%d", &n); if (n==0) daSie = true; for (std::set<int>::iterator it=ciag.begin();it!=ciag.end();it++) { fib = *it; if (fib * fib > n) break; else if (n%fib == 0 && ciag.find(n/fib)!=ciag.end()) { daSie = true; break; } } puts(daSie? "TAK": "NIE"); } return 0; } |
English