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
58
59
#include<cstdio>
#include<set>
#include<vector>
#define maksi 1000000000
using namespace std;
set<int> ilo;
vector<int> fib;
vector<bool> odp;


int main(){
	int a1=1;//zmienne do generacji
	int a2=1;
	int w=0,pom;
	//int i=0;
	//int maksi;
	fib.push_back(1);
 while(w<maksi){//generacja fibbonaciego
	w=a1+a2;
	a1=a2;
	a2=w;
	//i++;
	fib.push_back(w);
	ilo.insert(1);
	//printf("%d\n",w);
 }
	for(int i=0;i<fib.size();i++){//generacja iloczynu
		for(int j=i;j<fib.size();j++){
		
		long long przetwor=(long long)fib[i]*fib[j];
		if(przetwor<=maksi)ilo.insert(przetwor);
		else break;
		}
	}
	ilo.insert(0);
	int t;//generacja odpowiedzi
	scanf("%d",&t);
	for(int i=0;i<t;i++){
	int czy;
	scanf("%d",&czy);
	if(ilo.find(czy)!=ilo.end())odp.push_back(true);
	else odp.push_back(false);
	}
 
 
	for(int i=0;i<odp.size();i++){
		if(odp[i])printf("TAK\n");
		else printf("NIE\n");
	}
	//for(set<int> ::iterator iter = ilo.begin();iter!=ilo.end();++iter){printf("%d ",*iter);}
	//printf("%d ",ilo.size());
	//for(vector<int> ::iterator iter = fib.begin();iter!=fib.end();++iter){printf("%d ",*iter);}
 



	//printf("%d\n",i);
	return 0;
}