Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
0352 - Sum Cons
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==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== Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi 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. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Date de intrare invalide".''' ==Restricţii şi precizări== <span style=“color: red”>1 ≤ n ≤ 10.000.000</span> pentru fiecare test, numărul <span style=“color: red”>n</span> 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 : Date de intrare valide : 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> ==Explicatie cod:== Funcția validare(n) primește un parametru n de tip întreg și verifică dacă acesta se află în intervalul [1, 10_000_000]. Dacă condiția este îndeplinită, funcția returnează True, altfel returnează False. Funcția gasire_secventa(n) primește un parametru n de tip întreg și găsește secvențele de numere care satisfac o anumită condiție matematică. Aceasta parcurge un interval de la 1 până la jumătatea valorii lui n și verifică dacă există un număr a astfel încât formula (i + 1) * (2 * a + i) // 2 să fie egală cu n, unde i este un contor. Dacă găsește o astfel de secvență, o afișează pe ecran. În blocul if __name__ == '__main__':, se citește n de la intrare folosind funcția input(). Se validează datele de intrare utilizând funcția validare(n). Dacă datele de intrare sunt valide, se afișează un mesaj de confirmare, se apelează funcția gasire_secventa(n) și se afișează secvența găsită pe ecran. Altfel, se afișează un mesaj de eroare. Codul primește un număr de la intrare, validează datele și găsește secvențele care îndeplinesc condiția specificată. Acestea sunt afișate pe ecran.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width