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
#include<iostream>
using namespace std;

int fib[100];

bool istnieje(int x)
{
    for(int i=1; i<47; i++)
    {
        if(fib[i]==x) return true;
        if(fib[i]>x) return false;
    }
}

int main()
{
    int n, t;
    fib[0]=0;
    fib[1]=1;
    fib[47]=2000000000;
    fib[46]=2000000000;
    for(int i=2; fib[i-1]<=10000; i++) fib[i]=fib[i-1]+fib[i-2];
    cin>>t;
    for(int i=0; i<t; i++)
    {
        bool da_rade=false;
        cin>>n;
        if(n==0)
        {
            cout<<"TAK\n";
            continue;
        }
        for(int j=1; j*j<=n; j++)
        {
            if(n%j==0)
            {
                if(istnieje(j) && istnieje(n/j))
                {
                    cout<<"TAK\n";
                    da_rade=true;
                }
            }
        }
        if(!da_rade) cout<<"NIE\n";
    }

}