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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>

using namespace std;

//Pierwsze liczby ciągu Fibbonaciego
    long fibbo[]={
    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
    };


bool czy_nalezy(long liczba){
for (int i; i<43; i++){
    if (liczba==fibbo[i]) return 1;
}
return 0;
}

bool testuj(long liczba){
if (liczba<4 && liczba>-1){
    return 1; //0..3 naleza
}   else   {
    for (int i; i<43; i++){
        if(liczba%fibbo[i]==0) {
                if(czy_nalezy(liczba/fibbo[i])) return 1;
        }
    }
}
return 0;
}

int main()
{

    //Przyjmowanie danych
    int t; //Ilosc zestawów danych
    cin >> t;
    long tymczasowe; //Zmienna na aktualnie liczona wartosc
    bool wyniki[10]; //Tablica wynikow

    //Obliczanie wynikow
    for(int i=0; i<t; i++){
        cin >> tymczasowe;
        wyniki[i]=testuj(tymczasowe);
    }

    //Wypisywanie na standarnowe wyjscie
    for (int i=0; i<t; i++){
        if (wyniki[i]) {
                cout << "TAK\n";
        } else {
                cout << "NIE\n";
    }
    }

    return 0;
}