Securitate

 

După cum știe toată lumea, securitatea este foarte importantă în unitățile de învățământ. Cum bunul nostru prieten Vasilică este un angajat în domeniul securității, putem apela la el pentru a ne ajuta să scăpăm de amenințările teroriste de la universitatea noastră.

Pentru aceasta el vine cu ideea de a monta la intrarea în facultate un sistem, prevăzut cu un cod de acces (cod de identificare), acesta fiind format din patru numere naturale. Vasilică a auzit de criptare și știe că este foarte importantă, pentru ca teroriștii să nu poată intra și deranja studenții. Pentru securitatea sistemului acesta este prevăzut cu 6 chei secrete, în funcție de care se criptează datele reținute în baza de date a universității (date de acces individual pentru fiecare student). Acest dispozitiv care criptează cele patru numere de identificare ale fiecărui student (utilizând cele șase chei), folosește doar operațiile de adunare, înmulțire, și Sau Exclusiv.

Vasilică știe că noi suntem studenți la Facultatea de Automatică și Calculatoare, și atunci vrea ca noi să îl ajutăm în fabricarea dispozitivului. Ajutați-l pe Vasilică să facă un program care primind la intrare un cod de patru numere și cele șase chei secrete să cripteze aceste numere după schema:

Securitate

Legendă:

Securitate-> Sau Exclusiv pe biți între cele 2 numere.

Reamintim: Sau Exclusiv între doi biți are tabela de valori:

0

1

0

0

1

1

1

0

IMPORTANT!!! Pentru lucrul cu biți aveți la dispoziție un document foarte util care se găsește aici(en).

Securitate-> Adunarea celor 2 numere modulo 65536

Reamintim: x modulo y este echivalent cu restul împărțirii numărului x la y. (Adică x modulo y = x % y)

Securitate-> Înmulțirea celor 2 numere modulo 65536

 Cerințe

Dându-se cele șase chei și un număr T de studenți, fiecare identificat prin cele patru numere specifice fiecăruia, să se afișeze pe ecran valorile care sunt reținute în baza de date a universității, pentru fiecare student în conformitate cu schema de mai sus.

Date de intrare

Se citesc de la tastatură mai întâi cele 6 numere naturale reprezentând cheile, apoi un număr natural care reprezintă numărul de studenți, după aceea câte 4 numere pentru fiecare student reprezentând codul de acces:

K1 K2 K3 K4 K5 K6
T //numărul de studenți al căror cod de acces va fi codificat
n1 n2 n3 n4 //pentru primul student
n1 n2 n3 n4 //pentru al doilea student
....
n1 n2 n3 n4 //pentru al T-lea student

Date de ieșire

Pentru fiecare student se vor afișa datele specifice pe câte o linie separată:

r1 r2 r3 r4 //pentru primul student
r1 r2 r3 r4 //pentru al doilea student
....
r1 r2 r3 r4 //pentru al T-lea student

Restricții și precizări

1 <= T <= 1000
0 < n1, n2, n3, n4, K1, K2, K3, K4, K5, K6 < 65536
0 < r1, r2, r3, r4 <65536

Exemple

Date de intrare

2 3 5 7 11 13
4
3 3 3 3
2 3 5 7
10 12 14 16
12345 54321 6789 9876

Date de ieșire

2255 2241 2405 2422
2713 2711 2865 2822
2632 2639 2726 2777
42258 57322 55868 4

 

Autori: Bogdan-Cristian Drutu, Octavian Rânciog

Data: 2-11-2008