#575 · Subiectul II · Programare
Inversarea cifrelor, fără prima, la numerele cu peste 4 divizori (inversareCifre și nrDivizori)
✓ Rezolvare explicatăBucurești 2020 · nr. 3
Enunț
Fișierul atestat.in conține pe prima linie un număr natural n (2≤n≤100), iar pe a doua linie n numere naturale cu cel puțin 2 și cel mult 6 cifre, separate printr-un spațiu.
Se consideră subprogramele:
inversareCifre, cu un parametrux, prin care primește un număr natural de cel mult 6 cifre. Subprogramul modifică valoarea luix, inversând ordinea cifrelor lui, cu excepția primei cifre, care rămâne pe aceeași poziție. De exemplu, pentrux = 21754, după apelxva fi24571;nrDivizori, cu un parametrux, număr natural nenul de cel mult 6 cifre. Subprogramul returnează numărul divizorilor luix.
a. Scrieți definiția completă a subprogramului inversareCifre.
b. Scrieți definiția completă a subprogramului nrDivizori.
c. Scrieți un program care citește din atestat.in numărul n și cele n numere și, folosind apeluri utile ale celor două subprograme, modifică fiecare număr care are mai mult de 4 divizori, inversând ordinea cifrelor lui, cu excepția primei. Programul scrie în atestat.out, pe prima linie, toate numerele din șirul modificat. Dacă nu există numere cu mai mult de 4 divizori, se scrie mesajul nu au fost facute modificari.
Exemple
atestat.in |
atestat.out |
Explicații |
|---|---|---|
6254 1763 23 1678 218 492873 |
nu au fost facute modificari |
⚠️ Subiectul dă 245 1763 23 1876 218 492873. Toate cele șase numere au cel mult 4 divizori (254 = 2·127, 1678 = 2·839, 492873 = 3·164291, toate cu exact 4), deci după enunț nu se modifică niciunul |
623 6 9 17 25 101 |
nu au fost facute modificari |
Exemplul oficial: 2, 4, 3, 2, 3, 2 divizori |
42100 2010 360 97 |
2001 2010 306 97 |
Subiectul nu dă acest exemplu: 2100, 2010, 360 au 36, 16 și 24 de divizori |
Rezolvare
Exersează mai departe