0322 - Partitii Numar 2: Difference between revisions

From Bitnami MediaWiki
Mraa (talk | contribs)
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...
 
Mraa (talk | contribs)
No edit summary
 
Line 22: Line 22:
2 3 5  
2 3 5  
==Rezolvare==
==Rezolvare==
  def partitii(n, m, current, start):
<syntaxhighlight lang="python3" line="1">
    if n == 0 and len(current) >= m:
def partitii(n, m, current, start):
        print(" ".join(map(str, current)))
  if n == 0 and len(current) >= m:
        return
      print(" ".join(map(str, current)))
      return
  for i in range(start, n + 1):
      partitii(n - i, m, current + [i], i + 1)


    for i in range(start, n + 1):
if __name__ == "__main__":
        partitii(n - i, m, current + [i], i + 1)


if __name__ == "__main__":
  try:
    try:
      n, m = map(int, input("Introduceți n și m: ").split())
        n, m = map(int, input("Introduceți n și m: ").split())
     
       
      partitii(n, m, [], 1)
        partitii(n, m, [], 1)
  except ValueError:
    except ValueError:
      print("Introduceți valori numerice valide.")
        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>