0974 - Resturi: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
(10 intermediate revisions by 2 users not shown) | |||
Line 7: | Line 7: | ||
== Date de ieșire == | == Date de ieșire == | ||
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse corespund cerintelor.", apoi pe un rand programul va afișa pe ecran numărul S, reprezentând suma resturilor împărțirii tuturor numerelor naturale de la 1 la n prin numărul k. În caz contrar, se va afișa mesajul: "Datele introduse nu corespund cerintelor." | |||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
Line 16: | Line 16: | ||
: Introduceti numerele: 7 4 | : Introduceti numerele: 7 4 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund cerintelor. | |||
: 12 | : 12 | ||
<br> | <br> | ||
Line 23: | Line 24: | ||
: Introduceti numerele: 1000000000000000000000000 1000000000000000000000000000000 | : Introduceti numerele: 1000000000000000000000000 1000000000000000000000000000000 | ||
; Ieșire | ; Ieșire | ||
: | : Datele introduse nu corespund cerintelor. | ||
<br> | <br> | ||
Line 31: | Line 32: | ||
def validare_numere(n, k): | def validare_numere(n, k): | ||
if n < 1 or n > 2000000000: | if n < 1 or n > 2000000000: | ||
print("Datele introduse nu corespund cerintelor.") | |||
exit() | |||
if k < 1 or k > 2000000000: | if k < 1 or k > 2000000000: | ||
print("Datele introduse nu corespund cerintelor.") | |||
exit() | |||
def calc_suma_resturi(n, k): | def calc_suma_resturi(n, k): | ||
suma_resturilor = 0 | |||
for i in range(1, n+1): | for i in range(1, n+1): | ||
suma_resturilor += i % k | |||
return | return suma_resturilor | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
n, k = map(int, input("Introduceti numerele: ").split()) | n, k = map(int, input("Introduceti numerele: ").split()) | ||
validare_numere(n, k) | validare_numere(n, k) | ||
suma_resturilor = calc_suma_resturi(n, k) | |||
print( | print(f"Datele introduse corespund cerintelor.\n{suma_resturilor}") | ||
</syntaxhighlight> | |||
==Explicatie rezolvare== | |||
Acest program efectuează validarea și calculul sumei resturilor de la diviziunea fiecărui număr întreg de la 1 la n la k, unde n și k sunt două numere întregi introduse de utilizator. | |||
În primul rând, funcția `validare_numere` verifică dacă numerele introduse de utilizator sunt între 1 și 2 miliarde, așa cum este cerut în cerințe. Dacă nu, programul afișează un mesaj corespunzător și se termină prin utilizarea funcției `exit()`. | |||
Funcția `calc_suma_resturi` calculează suma resturilor de la diviziunea fiecărui număr întreg de la 1 la n la k, utilizând o buclă `for`. | |||
În funcția `main`, programul cere introducerea a două numere întregi separate prin spațiu de la utilizator, apoi validează datele folosind funcția `validare_numere` și calculează suma resturilor folosind funcția `calc_suma_resturi`. În cele din urmă, programul afișează mesajul "Datele introduse corespund cerințelor" și suma resturilor. |
Latest revision as of 17:22, 26 April 2023
Sursa: [1]
Cerinţa[edit | edit source]
Se dau n și k numere naturale. Calculați suma resturilor împărțirii tuturor numerelor naturale de la 1 la n prin numărul k.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele n și k, separate prin spațiu.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse corespund cerintelor.", apoi pe un rand programul va afișa pe ecran numărul S, reprezentând suma resturilor împărțirii tuturor numerelor naturale de la 1 la n prin numărul k. În caz contrar, se va afișa mesajul: "Datele introduse nu corespund cerintelor."
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n, k ⩽ 2.000.000.000
Exemplul 1[edit | edit source]
- Intrare
- Introduceti numerele: 7 4
- Ieșire
- Datele introduse corespund cerintelor.
- 12
Exemplul 2[edit | edit source]
- Intrare
- Introduceti numerele: 1000000000000000000000000 1000000000000000000000000000000
- Ieșire
- Datele introduse nu corespund cerintelor.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 0974
def validare_numere(n, k):
if n < 1 or n > 2000000000: print("Datele introduse nu corespund cerintelor.") exit() if k < 1 or k > 2000000000: print("Datele introduse nu corespund cerintelor.") exit()
def calc_suma_resturi(n, k):
suma_resturilor = 0 for i in range(1, n+1): suma_resturilor += i % k return suma_resturilor
if __name__ == '__main__':
n, k = map(int, input("Introduceti numerele: ").split()) validare_numere(n, k) suma_resturilor = calc_suma_resturi(n, k) print(f"Datele introduse corespund cerintelor.\n{suma_resturilor}")
</syntaxhighlight>
Explicatie rezolvare[edit | edit source]
Acest program efectuează validarea și calculul sumei resturilor de la diviziunea fiecărui număr întreg de la 1 la n la k, unde n și k sunt două numere întregi introduse de utilizator.
În primul rând, funcția `validare_numere` verifică dacă numerele introduse de utilizator sunt între 1 și 2 miliarde, așa cum este cerut în cerințe. Dacă nu, programul afișează un mesaj corespunzător și se termină prin utilizarea funcției `exit()`.
Funcția `calc_suma_resturi` calculează suma resturilor de la diviziunea fiecărui număr întreg de la 1 la n la k, utilizând o buclă `for`.
În funcția `main`, programul cere introducerea a două numere întregi separate prin spațiu de la utilizator, apoi validează datele folosind funcția `validare_numere` și calculează suma resturilor folosind funcția `calc_suma_resturi`. În cele din urmă, programul afișează mesajul "Datele introduse corespund cerințelor" și suma resturilor.