0322 - Partitii Numar 2
Cerinţa[edit | edit source]
Se dă un număr natural n şi un număr m. Determinaţi, în ordine lexicografică, toate modalităţile de a-l scrie pe n ca sumă de cel puţin m numere naturale distincte.
Date de intrare[edit | edit source]
Fişierul de intrare partitiinumar2.in conţine pe prima linie numerele n şi m.
Date de ieşire[edit | edit source]
Fişierul de ieşire partitiinumar2.out va conţine pe pe fiecare linie câte un şir de numere naturale ordonate strict crescător, separate prin câte un spaţiu. Suma numerelor din fiecare şir este n şi sunt cel puţin m numere în fiecare şir. Şirurile vor fi afişate în ordine lexicografică.
Restricţii şi precizări[edit | edit source]
1 ≤ m < n ≤ 40 ==Exemplu==: partitiinumar2.in
10 3 partitiinumar2.out
1 2 3 4 1 2 7 1 3 6 1 4 5 2 3 5
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1">
def partitii(n, m, current, start): if n == 0 and len(current) >= m: print(" ".join(map(str, current))) return for i in range(start, n + 1): partitii(n - i, m, current + [i], i + 1)
if __name__ == "__main__":
try: n, m = map(int, input("Introduceți n și m: ").split()) partitii(n, m, [], 1) except ValueError: print("Introduceți valori numerice valide.")
</syntaxhighlight>