0974 - Resturi: Difference between revisions

From Bitnami MediaWiki
No edit summary
Dragos1234 (talk | contribs)
 
(8 intermediate revisions by 2 users not shown)
Line 7: Line 7:


== Date de ieșire ==  
== Date de ieșire ==  
Acest program primește două numere de intrare '''n și k''' și calculează suma resturilor împărțirii fiecărui număr de la '''1 la n la k'''.
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."
 
Datele de ieșire ale programului sunt suma resturilor. Dacă numerele introduse de utilizator nu se încadrează în intervalul permis pentru '''n sau k''', programul va ridica o excepție de tip '''ValueError''' și va afișa un mesaj corespunzător.


== Restricţii şi precizări ==
== Restricţii şi precizări ==
Line 18: Line 16:
: Introduceti numerele: 7 4
: Introduceti numerele: 7 4
; Ieșire
; Ieșire
: Datele introduse corespund cerintelor.
: 12
: 12
<br>
<br>
Line 25: Line 24:
: Introduceti numerele: 1000000000000000000000000 1000000000000000000000000000000
: Introduceti numerele: 1000000000000000000000000 1000000000000000000000000000000
; Ieșire
; Ieșire
: '''n''' trebuie să fie între 1 și 2.000.000.000
: Datele introduse nu corespund cerintelor.
<br>
<br>


Line 33: Line 32:
def validare_numere(n, k):
def validare_numere(n, k):
     if n < 1 or n > 2000000000:
     if n < 1 or n > 2000000000:
         raise ValueError("n trebuie să fie între 1 și 2.000.000.000")
         print("Datele introduse nu corespund cerintelor.")
        exit()
     if k < 1 or k > 2000000000:
     if k < 1 or k > 2000000000:
         raise ValueError("k trebuie să fie între 1 și 2.000.000.000")
         print("Datele introduse nu corespund cerintelor.")
        exit()




Line 46: Line 47:


if __name__ == '__main__':
if __name__ == '__main__':
    try:
         n, k = map(int, input("Introduceti numerele: ").split())
         n, k = map(int, input("Introduceti numerele: ").split())
         validare_numere(n, k)
         validare_numere(n, k)
         S = calc_suma_resturi(n, k)
         suma_resturilor = calc_suma_resturi(n, k)
         print(S)
         print(f"Datele introduse corespund cerintelor.\n{suma_resturilor}")
    except ValueError as e:
 
        print(e)
</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()`.


</syntaxhighlight>
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>

  1. 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.