0319 - Suma 35

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerinţa

Se dă un număr natural nenul n. Să se determine toate modalităţile distincte de descompunere a numărului n în sumă de 3 şi 5.

Date de intrare

Fişierul de intrare suma35.in conţine pe prima linie numărul n.

Date de ieşire

Fişierul de ieşire suma35.out va conţine, în ordine lexicografică, toate modalităţile de descompunere a lui n în suma de 3 şi 5. Elementele fiecărei descompuneri vor fi scrie pe câte o linie a fişierului şi separate printr-un spaţiu.

Restricţii şi precizări

1 ≤ n ≤ 1000 pentru fiecare dintre valorile lui n folosite în fişierele de test există cel puţin o soluţie în fiecare descompunere elementele vor fi aranjate crescător ==Exemplu==: suma35.in

40 suma35.out

3 3 3 3 3 3 3 3 3 3 5 5 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5

Rezolvare

def descompunere_35(n, solutie):

   if n == 0:
       print(" ".join(map(str, solutie)))
       return
   if n >= 3:
       descompunere_35(n - 3, solutie + [3])
   if n >= 5:
       descompunere_35(n - 5, solutie + [5])

if __name__ == "__main__":

   # Citim numărul n din fișierul de intrare
   with open("suma35.in", "r") as f:
       n = int(f.readline().strip())
   # Apelăm funcția de descompunere și afișăm rezultatul în fișierul de ieșire
   with open("suma35.out", "w") as g:
       descompunere_35(n, [])

python suma35.py