Shift-regiszter
Az N-bites shift-regiszter bitjeit könnyü 1 helyiértékkel léptetni a magasabb helyiértékek felé (jobbra). A regiszter bitjeiböl véletlen bináris számjegyeket generálunk az alábbi módon: 
A regiszter bitjei kezdetben a1, a2, ..., aN értéküek. A regiszterböl minden idöegységben kilép outputként az aN bit. Minden bit egy pozicióval jobbra lép. Az elsö helyre (a1) egy XOR kapu segitségével számoljuk a belépö bit értékét.
A XOR kapu kapcsolókon keresztül csatlakozik a shift-regiszterhez. A shift-regiszter i-edik bitjéhez tartozó si kapcsolótól függ, hogy az a bit szerepel-e a kizáró vagy müveletben (si=1) vagy sem (si=0). Legyen ki=si*ai. Az XOR(k1,...,kN) értéke 1, ha k1,...,kN között páratlan számú 1-es van, egyébként pedig 0.
Ismerünk egy 2*N számjegyböl álló, shift-regiszterrel generált számjegysorozatot, ebböl kell megadni az egyes bitekhez tartozó kapcsolók értékeit. Ha többféle kapcsolóállással is elö lehet állitani a számjegysorozatot, akkor csak egy tetszölegest kell közülük kiirni.

órajel	a1	a2	a3	a4	a5	a6	a7	 output	
0	1	0	1	1	0	0	1	-	
1	0	1	0	1	1	0	0	1	
2	1	0	1	0	1	1	0	0	
3	1	1	0	1	0	1	1	0	
4	0	1	1	0	1	0	1	1	
5	0	0	1	1	0	1	0	1	
6	1	0	0	1	1	0	1	0	
7	1	1	0	0	1	1	0	1	
8	0	1	1	0	0	1	1	0	
9	1	0	1	1	0	0	1	1	
10	0	1	0	1	1	0	0	1	
11	1	0	1	0	1	1	0	0	
12	1	1	0	1	0	1	1	0	
13	0	1	1	0	1	0	1	1	
14	0	0	1	1	0	1	0	1	
Bemenet
A register.in állomány elsö sorában a shift-regiszter bitjei N száma van (1<=N<=750). A második sor 2*N számot tartalmaz (mindegyik 0 vagy 1), a 2*N generált bináris számjegy értékét.
Kimenet
A register.out állományba pontosan 1 sort kell irni. Ha létezik a kapcsolóknak olyan állása, amivel a számjegysorozat elöállitható, akkor az N darab kapcsoló értékét kell kiirni. Ha semmilyen kapcsolóállással nem lehet elöállitani, akkor egyetlen -1-et kell kiirni.
Példa
register.in	register.out	
7
1 0 0 1 1 0 1 0 1 1 0 0 1 1	1 0 1 1 0 1 1	

register.in	register.out	
3
0 0 0 1 1 1	-1