#include<iostream> #include<string> #include<map> #include<cmath> using namespace std; int main () { long int fib[50],liczby[10],max_fib,f0,f1,f2,liczba_sprawdzana,mozliwy_dzielnik; int k,l,m,t,max_fib_wsk; map<long int,int> fib_vect_flag; string odpowiedzi[10],odpowiedz; /* inicjalizuj zmienne, wczytaj t oraz dane wejsciowe */ cin >> t; for(k=0;k<t;k++) cin >> liczby[k]; /* wylicz i stablicuj wszystkie liczby Fibbonacciego < 10^9 */ f0=0;f1=1;f2=0;max_fib=0;max_fib_wsk=1;fib[0]=f0;fib[1]=f1; fib_vect_flag [1]=1; do {f2=f0+f1;max_fib=f2;max_fib_wsk++;f0=f1;f1=f2;fib[max_fib_wsk]=f2;fib_vect_flag [f2]=1;} while(max_fib<1000000000); /* sprawdzenie - wypisz wyliczone liczby Fibbonacciego */ /* for(k=0;k<=max_fib_wsk;k++) cout << fib[k] << endl; */ /* dla testowych danych wejsciowych sprawdz, czy dana liczba moze byc iloczynem dwoch liczb Fibonacciego */ for(k=0;k<t;k++) {m=1;odpowiedz="NIE";liczba_sprawdzana=liczby[k]; do {if(liczba_sprawdzana%fib[m]==0) {mozliwy_dzielnik=liczba_sprawdzana/fib[m];if(fib_vect_flag.count(mozliwy_dzielnik)>0) odpowiedz="TAK";} m++;} while(fib[m]<sqrt(liczba_sprawdzana)+1); odpowiedzi[k]=odpowiedz; } for(k=0;k<t;k++) cout << odpowiedzi[k] << endl; /* cin >> t;*/ 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 55 56 57 58 59 60 | #include<iostream> #include<string> #include<map> #include<cmath> using namespace std; int main () { long int fib[50],liczby[10],max_fib,f0,f1,f2,liczba_sprawdzana,mozliwy_dzielnik; int k,l,m,t,max_fib_wsk; map<long int,int> fib_vect_flag; string odpowiedzi[10],odpowiedz; /* inicjalizuj zmienne, wczytaj t oraz dane wejsciowe */ cin >> t; for(k=0;k<t;k++) cin >> liczby[k]; /* wylicz i stablicuj wszystkie liczby Fibbonacciego < 10^9 */ f0=0;f1=1;f2=0;max_fib=0;max_fib_wsk=1;fib[0]=f0;fib[1]=f1; fib_vect_flag [1]=1; do {f2=f0+f1;max_fib=f2;max_fib_wsk++;f0=f1;f1=f2;fib[max_fib_wsk]=f2;fib_vect_flag [f2]=1;} while(max_fib<1000000000); /* sprawdzenie - wypisz wyliczone liczby Fibbonacciego */ /* for(k=0;k<=max_fib_wsk;k++) cout << fib[k] << endl; */ /* dla testowych danych wejsciowych sprawdz, czy dana liczba moze byc iloczynem dwoch liczb Fibonacciego */ for(k=0;k<t;k++) {m=1;odpowiedz="NIE";liczba_sprawdzana=liczby[k]; do {if(liczba_sprawdzana%fib[m]==0) {mozliwy_dzielnik=liczba_sprawdzana/fib[m];if(fib_vect_flag.count(mozliwy_dzielnik)>0) odpowiedz="TAK";} m++;} while(fib[m]<sqrt(liczba_sprawdzana)+1); odpowiedzi[k]=odpowiedz; } for(k=0;k<t;k++) cout << odpowiedzi[k] << endl; /* cin >> t;*/ return 0; } |