0323 - Partitii Numar 3: Difference between revisions
Pagină nouă: ==Cerinţa== Se dă un număr natural n şi un interval [a,b]. Determinaţi, în ordine lexicografică, toate modalităţile de a-l scrie pe n ca sumă de numere naturale din intervalul [a,b]. ==Date de intrare== Fişierul de intrare partitiinumar3.in conţine pe prima linie numerele n, a şi b. ==Date de ieşire== Fişierul de ieşire partitiinumar3.out va conţine pe pe fiecare linie câte un şir de numere naturale din intervalul [a,b], ordonate crescător, separate prin... |
No edit summary |
||
Line 22: | Line 22: | ||
3 3 4 | 3 3 4 | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python3" line="1"> | |||
def partitii_n(n, a, b, solutie): | def partitii_n(n, a, b, solutie): | ||
if n == 0: | |||
print(" ".join(map(str, solutie))) | |||
return | |||
for i in range(a, min(b + 1, n + 1)): | |||
partitii_n(n - i, i, b, solutie + [i]) | |||
if __name__ == "__main__": | if __name__ == "__main__": | ||
# Citim numerele n, a și b din fișierul de intrare | |||
with open("partitiinumar3.in", "r") as f: | |||
n, a, b = map(int, f.readline().split()) | |||
# Apelăm funcția de partizionare și afișăm rezultatul în fișierul de ieșire | |||
with open("partitiinumar3.out", "w") as g: | |||
partitii_n(n, a, b, []) | |||
python partitiinumar3.py | python partitiinumar3.py | ||
</syntaxhighlight> |
Latest revision as of 17:47, 11 January 2024
Cerinţa[edit | edit source]
Se dă un număr natural n şi un interval [a,b]. Determinaţi, în ordine lexicografică, toate modalităţile de a-l scrie pe n ca sumă de numere naturale din intervalul [a,b].
Date de intrare[edit | edit source]
Fişierul de intrare partitiinumar3.in conţine pe prima linie numerele n, a şi b.
Date de ieşire[edit | edit source]
Fişierul de ieşire partitiinumar3.out va conţine pe pe fiecare linie câte un şir de numere naturale din intervalul [a,b], 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ă.
Restricţii şi precizări[edit | edit source]
1 ≤ a < b < n ≤ 40 ==Exemplu==: partitiinumar3.in
10 2 4 partitiinumar3.out
2 2 2 2 2 2 2 2 4 2 2 3 3 2 4 4 3 3 4
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def partitii_n(n, a, b, solutie):
if n == 0: print(" ".join(map(str, solutie))) return for i in range(a, min(b + 1, n + 1)): partitii_n(n - i, i, b, solutie + [i])
if __name__ == "__main__":
# Citim numerele n, a și b din fișierul de intrare with open("partitiinumar3.in", "r") as f: n, a, b = map(int, f.readline().split()) # Apelăm funcția de partizionare și afișăm rezultatul în fișierul de ieșire with open("partitiinumar3.out", "w") as g: partitii_n(n, a, b, [])
python partitiinumar3.py </syntaxhighlight>