0352 - Sum Cons: Difference between revisions
Paul Ungur (talk | contribs) Pagină nouă: ==Cerinţa== Se citește numărul natural nenul <span style=“color: red”>n</span>. Determinați toate modalitățile de a-l scrie pe <span style=“color: red”>n</span> ca sumă de cel puțin două numere naturale consecutive nenule. ==Date de intrare== Programul citește de la tastatură numărul <span style=“color: red”>n</span>. ==Date de ieşire== Programul afișează pe ecran descompunerile cerute, câte o descompunere pe o linie a ecranului, în ordine cresc... |
Paul Ungur (talk | contribs) No edit summary |
||
Line 23: | Line 23: | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | def validare(n): | ||
if not (1 <= n <= 10_000_000): | |||
return False | |||
return True | |||
if not | |||
def | 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> | </syntaxhighlight> | ||
Revision as of 16:20, 26 April 2023
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>