0323 - Partitii Numar 3
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 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
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
<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>