#include<cstdio>
using namespace std;
const int ZAKR=1000*1000*1007;
int FIB[57];
void genfib(int zakr)
{
FIB[0]=FIB[1]=1;
int i=1;
while(FIB[i]<zakr)
{
FIB[i+1]=FIB[i]+FIB[i-1];
i++;
}
}
bool spr(int a)
{
int j=44;
for(int i=1;i<=j;i++)
{
if(a%FIB[i]==0)
{
int pom=a/FIB[i];
for(;pom<FIB[j];j--)
{
}
if(FIB[j]==pom)
return true;
}
}
return false;
}
int main()
{
int t,a;
genfib(ZAKR);
scanf("%d",&t);
for(int i=0;i<t;i++)
{
scanf("%d",&a);
if(spr(a))
printf("TAK\n");
else
printf("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 | #include<cstdio> using namespace std; const int ZAKR=1000*1000*1007; int FIB[57]; void genfib(int zakr) { FIB[0]=FIB[1]=1; int i=1; while(FIB[i]<zakr) { FIB[i+1]=FIB[i]+FIB[i-1]; i++; } } bool spr(int a) { int j=44; for(int i=1;i<=j;i++) { if(a%FIB[i]==0) { int pom=a/FIB[i]; for(;pom<FIB[j];j--) { } if(FIB[j]==pom) return true; } } return false; } int main() { int t,a; genfib(ZAKR); scanf("%d",&t); for(int i=0;i<t;i++) { scanf("%d",&a); if(spr(a)) printf("TAK\n"); else printf("NIE\n"); } return 0; } |
English