0352 - Sum Cons
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>