Documente Academic
Documente Profesional
Documente Cultură
OLIMPIADA DE INFORMATICĂ
ETAPA ZONALĂ
19. februarie 2016.
CLASA a XI-XII-a
SUBIECTUL 2. (100 puncte)
Token
Un programator și-a propus să creeze coduri token verificabile, de exact 6 cifre, aplicând o
metodă inedită. A editat un program cu care a creat o matrice cu n linii și n coloane, în care a
început să introducă numerele naturale de la 1 la n, pe prima linie, apoi următoarele numere
naturale în jos, apoi spre stânga și în sus, urmând o spirală, ca în exemplul de mai jos, ultimul
număr introdus fiind n2:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Acesta este, desigur, doar un exemplu. Programatorul a creat și alte matrici, cu valori n mult mai
mari. Luând o matrice astfel creată, el a tăiat primele k coloane ale matricei (cele marcate cu gri
în exemplu). Apoi a luat elementele din prima coloană rămasă (cele din chenarul gros) și le-a
adunat (în exemplu, suma obținută este 3+18+25+22+11=79). Dacă suma rezultată a fost un
număr format din mai puțin de 6 cifre, a adăugat un număr de zerouri, astfel ca numărul obținut
să fie de exact 6 cifre. Din suma 79, de exemplu, a obținut astfel codul token 790000. Dacă
suma obținută a avut mai mult de 6 cifre, codul token a fost format ca rest al împărțirii sumei la
1000000.
Cerință
Să se redacteze un program care citește valorile n și k din fișierul token.in, apoi calculează și
înregistrează codul token în fișierul de ieșire token.out, în conformitate cu regula descrisă mai
sus.
Constrângeri și precizări
Fișierul de intrare va conține două numere naturale, n și k, separate cu un spațiu.
3≤n≤30000
0≤k<n
„Codul token” descris în enunț este un număr natural format din exact 6 cifre.
În 50% din fișierele de test vom avea n≤500.
Exemplu
token.in token.out
5 2 790000
Timp maxim de execuție: 1 secundă/test.