4296 - Sum Div: Diferență între versiuni
(Pagină nouă: == Cerinţa == Se dă un șir de '''n''' numere naturale nenule și de asemenea un număr natural '''p'''. Să se calculeze suma numerelor din șir care au cel puțin '''p''' divizori. == Date de intrare == Programul citește de la tastatură numerele '''nr''' și '''p''', iar apoi șirul de '''n''' numere naturale, separate prin spații. == Date de ieşire == Programul va afișa pe ecran numărul '''suma''', reprezentând suma numerelor din șir care au cel puțin '''p''' di...) |
Fără descriere a modificării |
||
(Nu s-a afișat o versiune intermediară efectuată de același utilizator) | |||
Linia 15: | Linia 15: | ||
: 7 4 10 17 1 | : 7 4 10 17 1 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 14 | : 14 | ||
== Explicație == | == Explicație == | ||
Linia 69: | Linia 69: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicație == | |||
Codul calculează suma numerelor dintr-o listă dată, care au cel puțin p divizori. Datele de intrare sunt primite de la utilizator și sunt validate prin funcția validare_date(). Funcția nrdiv() calculează numărul de divizori ai unui număr dat, iar funcția suma_p_divizori() calculează suma numerelor din listă care au cel puțin p divizori. Dacă datele de intrare corespund restricțiilor impuse, se afișează suma calculată, altfel se afișează un mesaj corespunzător. |
Versiunea curentă din 28 aprilie 2023 15:26
Cerinţa
Se dă un șir de n numere naturale nenule și de asemenea un număr natural p. Să se calculeze suma numerelor din șir care au cel puțin p divizori.
Date de intrare
Programul citește de la tastatură numerele nr și p, iar apoi șirul de n numere naturale, separate prin spații.
Date de ieşire
Programul va afișa pe ecran numărul suma, reprezentând suma numerelor din șir care au cel puțin p divizori.
Restricții și precizări
- nr ∈ Ν
- 1 ⩽ nr ⩽ 100.000
- 1 ⩽ p ⩽ 100.000
- cele n numere din șir vor fi numere naturale nenule mai mici decât 1.000.000
Exemplu1
- Intrare
- 5 3
- 7 4 10 17 1
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 14
Explicație
Numerele din șir care au cel puțin 3 divizori sunt 4 și 10, iar suma lor este 14.
Exemplu2
- Intrare
- 5 100
- 5 12 24 3 72
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 0
Explicație
Niciun număr nu are cel puțin 100 de divizori, deci suma este 0.
Rezolvare
import math
def validare_date(nr, p, n):
flag = False
if 0 <= int(nr) <= 1_000 and 1 <= int(p) <= 1_0000:
flag = all(isinstance(x, int) and 1 <= x <= 1_000_000 for x in n)
return flag
def nrdiv(n):
cnt = 0
for i in range(1, int(math.sqrt(n))+1):
if n % i == 0:
cnt += 2
if i * i == n:
cnt -= 1
return cnt
def suma_p_divizori(n, p):
suma = 0
for i in n:
if nrdiv(i) >= p:
suma += i
return suma
if __name__ == '__main__':
nr, p = map(int, input().split())
n = list(map(int, input().split()))
if validare_date(nr, p, n):
print("\nDatele de intrare corespund restricțiilor impuse.\n")
suma = suma_p_divizori(n, p)
print(suma)
else:
print("Datele de intrare nu corespund restricțiilor impuse.")
Explicație
Codul calculează suma numerelor dintr-o listă dată, care au cel puțin p divizori. Datele de intrare sunt primite de la utilizator și sunt validate prin funcția validare_date(). Funcția nrdiv() calculează numărul de divizori ai unui număr dat, iar funcția suma_p_divizori() calculează suma numerelor din listă care au cel puțin p divizori. Dacă datele de intrare corespund restricțiilor impuse, se afișează suma calculată, altfel se afișează un mesaj corespunzător.