0352 - Sum Cons

From Bitnami MediaWiki
Revision as of 16:20, 26 April 2023 by Paul Ungur (talk | contribs)

Cerinţa

Se citește numărul natural nenul n. Determinați toate modalitățile de a-l scrie pe n ca sumă de cel puțin două numere naturale consecutive nenule.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieşire

Programul afișează pe ecran descompunerile cerute, câte o descompunere pe o linie a ecranului, în ordine crescătoare a numărului de termeni din descompunere, termenii unei descompuneri fiind scriși în ordine crescătoare și separați prin exact un spațiu.

Restricţii şi precizări

1 ≤ n ≤ 10.000.000 pentru fiecare test, numărul n se poate scrie ca sumă de cel puțin 2 numere naturale consecutive nenule în cel puțin un mod.

Exemplu:

Date de intrare 30

Date de ieșire 9 10 11 6 7 8 9 4 5 6 7 8

Rezolvare

<syntaxhighlight lang="python" line> def validare(n):

   if not (1 <= n <= 10_000_000):
       return False
   return True


def gasire_secventa(n):

   for i in range(1, n // 2 + 1):
       a = int((2 * n - i - i ** 2) / (2 * i + 2))
       if a >= 1 and n == (i + 1) * (2 * a + i) // 2:
           for k in range(i + 1):
               print(k + a, end=" ")
           print()


if __name__ == '__main__':

   n = int(input())
   if validare(n):
       print("Date de intrare valide")
       gasire_secventa(n)
   else:
       print("Date de intrare invalide")

</syntaxhighlight>