3994 - Partitii Numar 5

From Bitnami MediaWiki
Revision as of 22:00, 21 December 2023 by Mraa (talk | contribs) (Pagină nouă: ==Cerința== Se dă un număr natural n. Determinați, în ordine lexicografică, toate modalitățile de a-l scrie pe n ca sumă de numere naturale pare. ==Date de intrare== Programul citește de la tastatură numărul natural n. ==Date de ieșire== Programul va afișa pe câte linie a ecranului câte un șir de numere naturale pare ordonate crescător, separate prin câte un spațiu. Suma numerelor din fiecare șir este n. Șirurile vor fi afișate în ordine lexicografic...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Se dă un număr natural n. Determinați, în ordine lexicografică, toate modalitățile de a-l scrie pe n ca sumă de numere naturale pare.

Date de intrare

Programul citește de la tastatură numărul natural n.

Date de ieșire

Programul va afișa pe câte linie a ecranului câte un șir de numere naturale pare ordonate crescător, separate prin câte un spațiu. Suma numerelor din fiecare șir este n. Șirurile vor fi afișate în ordine lexicografică.

Dacă nu există nicio modalitate de a-l scrie pe n ca sumă de numere naturale pare se va afișa mesajul imposibil.

Restricții și precizări

1 ≤ n ≤ 40 ==Exemplu==: Intrare

10 Ieșire 2 2 2 2 2 2 2 2 4 2 2 6 2 4 4 2 8 4 6 10

Rezolvare

def generare_siruri(n, suma_curenta, sir_parcial):

   # Verificăm dacă am atins suma dorită
   if suma_curenta == n:
       print(*sir_parcial)
       return
   elif suma_curenta > n:
       return
   # Generăm numere pare și continuăm recursiv
   for i in range(2, n + 1, 2):
       generare_siruri(n, suma_curenta + i, sir_parcial + [i])


if __name__ == "__main__":

   # Citim datele de intrare
   n = int(input())
   # Apelăm funcția pentru a afișa șirurile
   generare_siruri(n, 0, [])
   # Verificăm dacă nu există nicio modalitate de a-l scrie pe n ca sumă de numere naturale pare
   if n % 2 != 0:
       print("imposibil")

python sumaNNumerePare.py