Toata lumea stie - daca nu sah - cel putin cum se misca dama pe o tabla de sah. Sa ne imaginam insa ca avem o tabla sub forma unui hexagon. Mai jos se afla o astfel de tabla de dimensiune 3, unde pe fiecare latura exista cate 3 spatii (notate cu 'x').
x x x x x x x x x x x x x x x x x x xAtunci o dama - notata cu Q - va controla campurile notate cu 'o':
x o x o o x x o Q o o o o o x x x o xPare ceva simplu: aici dama poate controla 3 diagonale (nu se poate actiona pe verticala), spre deosebire de tabla de sah clasica, unde pot fi controlate pana la 4 diagonale.
p_1 q_1 p_2 q_2 .. p_k q_k
Exemplu: Pentru intrarea
3o iesire posibila este:
3 1 1 2 3 3 2Timp de executie: 5" per test (pentru un calculator PC 386 40 MHz).
Observatii:
Prin orice punct al tablei trec exact trei diagonale.
Orice doua diagonale care trec printr-un punct fac intre ele un unghi de 120
grade.
Conform teoremei lui Erdos, pentru orice n>1, intre n si 2n exista cel
putin un numar prim.
Fiind dat k natural, k<=1300, sa se determine cel mai mic numar
n cu proprietatea ca in intervalul deschis (n,2n) sunt exact k numere
prime.
Intrare (de la tastatura):
kIesire (ecran):
nCerinta: Programul trebuie sa rezolve problema in maxim 60" pentru fiecare test. (PC-386, 40 MHz}
Un serviciu de informatii a surprins un mesager care transmitea urmatorul text criptat:
alzfx mmdrw mmzff kuefi ttAgentii pusi pe urma lui sunt atentionati sa afle tot ce pot, fara a da de banuit ca au gasit o scurgere de informatii (altfel adversarul ar sti ca este deconspirat si ar schimba modul de actiune). Ei isi fac meseria si reusesc sa gaseasca programul de criptare, care codifica un mesaj folosind un cuvant cheie (acelasi sau altul pentru fiecare text). Gasesc chiar si cheia cu care s-a criptat textul de sus: este cuvantul 'martie'. Iata si programul de criptare:
uses crt; var ii,o:text; text,cheie:string; i,j,k,k1,n,m,p:integer; begin clrscr; assign(ii,'vig_in'); assign(o,'vig_out'); reset(ii);rewrite(o); readln(ii,text); {Textul se da cu litere mici, fara spatii; dupa un rand liber, se da cheia} readln(ii); readln(ii,cheie); n:=length(text); m:=length(cheie); for j:=1 to n do begin i:=ord(text[j])-97; k1:=j mod m; if k1=0 then k1:=m; k:=ord(cheie[k1])-97; p:=(i+k) mod 26; write(o,char(p+97)); if (j mod 5)=0 then write(o,' '); if (j mod 55)=0 then writeln(o) end; close(ii); close(o) end.Pe baza acestor informatii, serviciul poate construi un program de decriptare. Astfel, au putut fi decriptate mesajele:
1) alzfx mmdrw mmzff kuefi tt.....................................cheie 'martie' 2) oayfr zuanm rfytu hnjyb juatu qyjnc uadya......................cheie 'unu' 3) rzqpd qdrig sqqtw uaiww kdtic onlbi ooddt qoobl aqvci uo.......cheie 'doi' 4) befik rkigj ikncx qorgm evqib dezbw izbxm lbepc fv.............cheie 'trei' 5) cumfn ressi prtjy bagrh ralzh jthkw tsxdu cagtu obhrl p........cheie 'patru'Incercati si voi.
Se cer DOAR mesajele initiale si mesajele decodificate corespunzatoare !