Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | streetcrypto.in, streetcrypto.out | Sursă | ONIS 2015, Runda Finala |
Autor | Mihai Calancea | Adăugată de | |
Timp execuţie pe test | 0.125 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Street Crypto
Petre Căpraru, student la "Facultatea de Informatică şi Care Era Cealaltă Chestie?", a devenit foarte interesat de studiile pe care prietenul său, Ştefan Şenilă, le face în domeniul criptografiei. Petrică a hotărât astfel să dezvolte un nou algoritm de criptare, pe baza căruia să-şi facă licenţa, doctoratul, poate şi o invitaţie de nuntă când va fi cazul. Algoritmul funcţionează în felul următor:
Petrică vrea să cripteze N numere prime distincte cu valori mai mici sau egale cu 1.000.000.000. Acestea sunt stocate în şirul Prim[]. Pentru a le cripta, el va face următorii paşi:
1. Îşi va alege o permutare aleatoare de lungime N, fie ea P.
2. Va construi un nou şir V obţinut după regula: V[i] = Prim[i] * Prim[P[i]], pentru orice i în [1, N].
3. Dacă elementele lui V sunt distincte, algoritmul se termină. Altfel, se reia pasul 1.
Având la dispoziţie şirul V după ce s-a terminat algoritmul, recuperaţi mulţimea de numere prime, ruinând astfel şansele lui Petrică de a avea un viitor decent.
Date de intrare
Fişierul de intrare streetcrypto.in va conţine pe prima sa linie numărul de teste T. Urmează T teste, fiecare având următorul format: pe prima linie se va afla numărul de valori N urmat pe a doua linie de N valori întregi distincte.
Date de ieşire
În fişierul de ieşire streetcrypto.out se vor afla T linii, pe fiecare linie aflându-se soluţia pentru testul corespunzător, N numere prime afişate în ordine crescătoare.
Restricţii
- 1 ≤ T ≤ 100
- 1 ≤ N ≤ 50
- 1 ≤ V[i] ≤ 1018
Exemplu
streetcrypto.in | streetcrypto.out |
---|---|
1 3 10 6 15 | 2 3 5 |