0323 - Partitii Numar 3: Difference between revisions

From Bitnami MediaWiki
Mraa (talk | contribs)
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...
 
Mraa (talk | contribs)
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)))
  if n == 0:
        return
      print(" ".join(map(str, solutie)))
    for i in range(a, min(b + 1, n + 1)):
      return
        partitii_n(n - i, i, b, solutie + [i])
  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
  # Citim numerele n, a și b din fișierul de intrare
    with open("partitiinumar3.out", "w") as g:
  with open("partitiinumar3.in", "r") as f:
        partitii_n(n, a, b, [])
      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>