0322 - Partitii Numar 2: Difference between revisions
Pagină nouă: ==Cerinţa== 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== Fişierul de intrare partitiinumar2.in conţine pe prima linie numerele n şi m. ==Date de ieşire== 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. Sum... |
No edit summary |
||
Line 22: | Line 22: | ||
2 3 5 | 2 3 5 | ||
==Rezolvare== | ==Rezolvare== | ||
<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> |
Latest revision as of 18:13, 11 January 2024
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>