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
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
using namespace std;

void fib(unsigned long int *f);

int main()
{
    int t;
    cin >> t;

    unsigned long int f[44];
    f[43] = 1000000001;
    fib(f);

    int j, i, liczba, stala_liczba;
    int ilosc;

    for(int p = 0; p<t; p++)
    {
        liczba;
        cin >> liczba;
        stala_liczba = liczba;

        j = i = 0;
        bool jest = false, nie_jest = false;


        ilosc = 1;

        if(liczba == 0)
        {
            cout << "TAK\n";
            continue;
        }


        while(f[i] <= liczba)
            i++;

        i--;
        if(liczba == f[i])
        {
            cout << "TAK\n";
            continue;
        }

        i = 1;

        while(!jest && !nie_jest)
        {
            while(f[i] < liczba)
            {
                liczba = stala_liczba;
                if(liczba % f[i] == 0)
                {
                    j = i;
                    //j++;
                    liczba /= f[i];
                    ilosc = 1;
                    while(f[j] <= liczba)
                    {
                        if(liczba % f[j] == 0 && liczba / f[j] == 1 && ilosc < 2)
                        {
                            ilosc++;
                            jest = true;
                        }
                        if(ilosc >= 2)
                        {
                            nie_jest = true;
                            break;
                        }

                        j++;
                    }
                }
                i++;
            }
            nie_jest = true;
        }

        if(jest)
            cout << "TAK\n";
        else
            cout << "NIE\n";
    }


    return 0;
}


void fib(unsigned long int *tab)
{
    unsigned long long f,f0,f1;
    int i;

    f0 = 0;
    f1 = 1;
    for(i = 0; i < 45; i++)
        if(i > 1)
        {
          f  = f0 + f1;
          tab[i-2] = f;
          f0 = f1;
          f1 = f;
        }
        else
        {
            f = i;
        }


}