#559 · Subiectul II · Programare
Cel mai mare număr perfect dintr-un fișier și prima lui poziție (subprogramul perfect)
✓ Rezolvare explicatăBucurești 2020 · nr. 12
Enunț
a) Un număr perfect este un număr natural egal cu dublul sumei divizorilor săi.
Exemplu: 6 este număr perfect pentru că 2·6 = 1+2+3+6.
⚠️ Definiția din subiectul oficial e formulată greșit, iar exemplul o contrazice: niciun număr nu e egal cu dublul sumei divizorilor săi. Corect este invers: suma tuturor divizorilor e egală cu dublul numărului (echivalent, suma divizorilor diferiți de el însuși e egală cu numărul). Exemplul
2·6 = 1+2+3+6folosește definiția corectă, iar rezolvarea de mai jos la fel.
Subprogramul perfect primește prin parametrul x un număr natural din intervalul [1, 10⁶] și returnează 1 dacă numărul este perfect și 0 altfel. Scrieți la calculator definiția completă a subprogramului.
Exemplu: pentru x=6 subprogramul returnează 1, iar pentru x=5 subprogramul returnează 0.
b) Fișierul perfect.in conține pe primul rând un șir de numere naturale din intervalul [1, 10⁶], separate prin câte un spațiu. Se cere scrierea și executarea la calculator a unui program care citește șirul de numere din fișier, apoi afișează pe ecran cel mai mare număr perfect din șirul citit și prima poziție a acestuia în șir, pe același rând, separate prin câte un spațiu. Programul va folosi apeluri utile ale subprogramului perfect. Dacă în fișier nu există niciun număr perfect, atunci pe ecran se afișează mesajul imposibil.
Exemple
Date de intrare (perfect.in) |
Date de ieșire | Explicații |
|---|---|---|
2048 6 79 496 1379 28 |
496 4 |
Numerele perfecte sunt 6, 496 și 28; cel mai mare, 496, e pe poziția 4 |
Rezolvare
Exersează mai departe