Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8. Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
 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
/*----------------------
Koniecko �ukasz - lukon
lukon10@wp.pl
----------------------*/
/*---------------------------------------- 
Potyczki Algorytmiczne 2014, runda pr�bna
Zadanie: ILO
Iloczyn 
-----------------------------------------*/

#include <iostream>
using namespace std;

/* Obliczanie n-tego wyrazu ci�gu F. */
int fibonacci(int n){
	if(n==0) return 0;
	if(n==1) return 1;
	int f=0;
	int f1=0;
	int f2=1;
	for(int i=2; i <= n; i++){
		f = f1 + f2;
		f1 = f2;
		f2 = f;				
	}	
	return f;
}

/* Szukanie dw�ch liczb z ci�gu F., kt�re s� iloczynem licby n */
int iloczyn(int n){
	if(n==0 || n==1) return 0;
	
	int f = 0; //kolejne liczby z ci�gu F.
	
	/* Jezeli liczba n >= 2 i jest liczb� z ci�gu F. to ma dwa dzielniki -> TAK */
	int fk = 0; //ile liczb w ciagu
	for(int i=3; f<=n; i++){
		f = fibonacci(i);
		if(f == n) return 1;
		fk=i;
	}
	
	f = 0;
	/* Sprawdzanie, kt�re liczby z ci�gu F. s� dzielnikami liczby n */
	int tab_dz[fk]; //tablica z dzielnikami liczby n
	int ld=0; // liczba dzielnik�w
	for(int i=3; f <= n; i++){
		f = fibonacci(i);		
		if(n%f == 0) {
			tab_dz[ld] = f;			
			ld++;
		}
	}
	
	/* Sprawdzanie czy jest iloczyn dw�ch liczb, kt�ry daje liczb� n */
	for(int i=0; i < ld; i++)
		for(int j=i; j < ld; j++){
			if(tab_dz[i]*tab_dz[j] == n) return 1;
		}
	
	return 0;
}

int main(){	
	int t; //liczba przypadk�w testowych	
	int n; //liczba do testu
	cin >> t;
	
	/* Sprawdzanie... */
	for(int i=0; i < t; i++){
		cin >> n;
		if(iloczyn(n)) 
			cout << "TAK" << endl;
		else 
			cout << "NIE" << endl;
	}
}