0319 - Suma 35

De la Universitas MediaWiki

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