0485 - Facebook: Difference between revisions
Pagină nouă: == Cerința == Într-un grup sunt '''nr_personane''' persoane, numerotate de la 1 la '''nr_personane''' și fiecare are cont pe Facebook. Ele îsi dau like-uri unul altuia, dar o persoană nu-și poate da like ei însăși. Despre fiecare pereche de persoane '''i''' '''j''' se știe câte like-uri a dat persoana '''i''' persoanei '''j'''. Să se determine persoana care a primit cele mai multe like-uri. == Date de intrare == Programul citește de la tastatură numărul '''nr_... |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 9: | Line 9: | ||
În următorul rând se va afișea pe ecran numărul '''pers_nr_max_likeuri''', reprezentând numărul de ordine al persoanei cu număr maxim de like-uri primite. | În următorul rând se va afișea pe ecran numărul '''pers_nr_max_likeuri''', reprezentând numărul de ordine al persoanei cu număr maxim de like-uri primite. | ||
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul " | În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Nu au fost respectate cerintele impuse". | ||
== Restricții și precizări == | == Restricții și precizări == | ||
* 1 ⩽ '''nr_personane''' ⩽ 100 | * 1 ⩽ '''nr_personane''' ⩽ 100 | ||
Line 52: | Line 52: | ||
pers_nr_max_likeuri = 1 | pers_nr_max_likeuri = 1 | ||
# Verificam ordinea persoanei (in lista) care are cele mai multe like-uri | |||
# punand i in pers_nr_max_likeuri cand gasim persoana cu mai multe like-uri | |||
for i in range(2, nr_personane + 1): | for i in range(2, nr_personane + 1): | ||
if (likeuri[i] > likeuri[pers_nr_max_likeuri]): | if (likeuri[i] > likeuri[pers_nr_max_likeuri]): | ||
Line 60: | Line 62: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
# Citim de la tastatura numerele cerute | |||
nr_personane = int(input()) | nr_personane = int(input()) | ||
likeuri = list(repeat(0, 105)) | likeuri = list(repeat(0, 105)) | ||
Line 69: | Line 72: | ||
likeuri[j] += like | likeuri[j] += like | ||
# Verificam daca datele introduse sunt valide | |||
# daca nu afisam mesajul corespunsador | |||
try: | try: | ||
validare(nr_personane, likeuri) | validare(nr_personane, likeuri) |
Latest revision as of 11:15, 23 May 2023
Cerința[edit | edit source]
Într-un grup sunt nr_personane persoane, numerotate de la 1 la nr_personane și fiecare are cont pe Facebook. Ele îsi dau like-uri unul altuia, dar o persoană nu-și poate da like ei însăși. Despre fiecare pereche de persoane i j se știe câte like-uri a dat persoana i persoanei j.
Să se determine persoana care a primit cele mai multe like-uri.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul nr_personane, iar apoi nr_personane șiruri cu câte nr_personane - 1 numere naturale. Al ilea șir reprezintă numărul de like-uri date de persoana i, celeorlate persoane, în ordine.
Date de ieșire[edit | edit source]
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse". În următorul rând se va afișea pe ecran numărul pers_nr_max_likeuri, reprezentând numărul de ordine al persoanei cu număr maxim de like-uri primite.
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Nu au fost respectate cerintele impuse".
Restricții și precizări[edit | edit source]
- 1 ⩽ nr_personane ⩽ 100
- dacă sunt mai multe persoane cu număr maxim de like-uri primite, se va afișa cea cu numărul de ordine mai mic
Exemplu 1[edit | edit source]
- Intrare
- 3
- 1
- 1
- 2
- 1
- 1
- 3
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- 2
Exemplu 2[edit | edit source]
- Intrare
- 0
- Ieșire
- Nu au fost respectate cerintele impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 0485 - Facebook
from itertools import repeat
def validare(nr_personane, likeuri):
# Daca datele sunt invalide v-om face raise la eroarea ValueError
if (not (nr_personane >= 1 and nr_personane <= 100)): raise ValueError
for i in range(1, nr_personane + 1): if (not (likeuri[i] >= 1 and likeuri[i] <= 100)): raise ValueError
def facebook(nr_personane, likeuri):
pers_nr_max_likeuri = 1
# Verificam ordinea persoanei (in lista) care are cele mai multe like-uri # punand i in pers_nr_max_likeuri cand gasim persoana cu mai multe like-uri for i in range(2, nr_personane + 1): if (likeuri[i] > likeuri[pers_nr_max_likeuri]): pers_nr_max_likeuri = i
print(pers_nr_max_likeuri)
if __name__ == '__main__':
# Citim de la tastatura numerele cerute nr_personane = int(input()) likeuri = list(repeat(0, 105))
for i in range(1, nr_personane + 1): for j in range(1, nr_personane + 1): if i != j: like = int(input()) likeuri[j] += like
# Verificam daca datele introduse sunt valide # daca nu afisam mesajul corespunsador try: validare(nr_personane, likeuri) except ValueError: print("Nu au fost respectate cerintele impuse") else: print("Datele de intrare corespund restricțiilor impuse")
facebook(nr_personane, likeuri)
</syntaxhighlight>