1483 - Coronite
În vederea premierii la un concurs de informatică N
candidați sunt rugați să se așeze pe un cerc. Elevii sunt identificați în ordine prin numerele de la 1
la N
. Comisia pleacă din dreptul primului elev, face x1
pași pe cerc și pune coronița elevului respectiv. Mai departe, comisia merge în continuare pe cerc x2
pași și pune o a doua coroniță elevului curent. Daca elevul curent are deja o coroniță atunci se numără și acea poziție și trece mai departe. După N
astfel de acțiuni premierea se încheie. Premierea se consideră a fi validă dacă toți candidații au primit câte o coroniță.
Cerința
Aflați dacă premierea a fost validă și de asemenea, aflați a câta coroniță a fost pusă elevului cu numărul 1
.
Date de intrare
Fișierul de intrare coronite.in
conține :
- Pe prima linie numărul
N
de elevi. - Pe a doua linie,
N
valorix1
,x2
, … ,xN
numere naturale nenule, reprezentând, în ordine, numărul de pași pe cerc pe care îl efectuează comisia pentru premierea următorului elev.
Date de ieșire
Fișierul de ieșire coronite.out
va conține:
- Pe prima linie se va scrie numărul
1
dacă premierea a fost validă sau0
în caz contrar -Pe a doua linie o valoareNR
reprezentând a câta coroniță i-a fost acordată elevului cu numărul de concurs1
. Dacă elevul1
nu a fost premiat valoarea luiNR
va fi0
.
Restricții și precizări
1 ≤ N ≤ 100
1 ≤ xi ≤ 2*N
- Dacă primul copil primește mai multe coronițe, se va afișa numărul de ordine al primei coronițe primite de el.
Exemplul 1
coronite.in
6 3 1 9 4 1 2
coronite.out
1 5
Explicație
Se pun coronite, in ordine, elevilor: 4
, 5
, 2
, 6
, 1
, 3
. Toți elevii au coronițe. Elevului 1
i se pune a 5
-a coroniță.
Exemplul 2
coronite.in
4 1 3 4 1
coronite.out
0 2
Explicație
Se pun coronițe elevilor: 2
, 1
. Elevul 1
primește a 2
-a coroniță.
Încărcare soluție
Lipește codul aici
with open("coronite.in", "r") as fin, open("coronite.out", "w") as fout:
x = [0] * 101
sel = [0] * 101
n = 0
def main():
n = int(fin.readline())
for i in range(1, n+1):
x[i] = int(fin.readline())
for i in range(1, n+1):
for j in range(1, x[i]+1):
poz += 1
if poz > n:
poz = 1
if poz == 1 and sel[1] == 0:
nr = i
sel[poz] = 1
ok = 1
for i in range(1, n+1):
if sel[i] == 0:
ok = 0
if ok:
fout.write("1\n")
else:
fout.write("0\n")
fout.write(str(nr) + "\n")
if __name__ == '__main__':
main()