1960 - Perfecte
Cerința[edit | edit source]
Un număr natural nenul se numește perfect dacă este egal cu suma divizorilor săi naturali strict mai mici decât el.
Exemplu: 28 este număr perfect pentru că 28 = 1 + 2 + 4 + 7 + 14. Se dă un șir de n numere naturale. Pentru fiecare element din șir se va afișa valoarea 1 dacă acesta este perfect sau 0 în caz contrar.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n și apoi n numere naturale.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran șirul de valori 1 și 0 separate prin câte un spațiu, conform cerinței.
Restricții și precizări[edit | edit source]
- 0 < n < 1000;
- numerele citite vor fi mai mici decât ;
Exemplul 1[edit | edit source]
- Intrare
- 5
- 28 7 8 9 6
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 1 0 0 0 1
Explicație[edit | edit source]
- 28 și 6 sunt numere perfecte.
Exemplul 2[edit | edit source]
- Intrare
- 0
- 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="">
- 1960 - Perfecte
- definim funcția care primește ca argument un număr natural și verifică dacă acesta este perfect
def is_perfect(num):
divisors_sum = 0 for i in range(1, num): if num % i == 0: divisors_sum += i return divisors_sum == num
if __name__ == "__main__":
# citim de la tastatură numărul de elemente și vectorul de numere n = int(input("Introduceți numărul de elemente: ")) vector = list(map(int, input("Introduceți elementele vectorului: ").split())) # verificarea restricțiilor if 0 < n < 1000 and all(0 <= i < 10**19 for i in vector): print("Datele de intrare corespund restricțiilor impuse.") # pentru fiecare număr din vector, verificăm dacă este perfect și afișăm rezultatul for num in vector: if is_perfect(num): print("1", end=" ") else: print("0", end=" ") print() else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>