0974 - Resturi: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
Linia 7: Linia 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 de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa valoarea cerută. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse
 
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 ==

Versiunea de la data 26 martie 2023 15:20

Sursa: [1]

Cerinţa

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

Programul citește de la tastatură numerele n și k, separate prin spațiu.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa valoarea cerută. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse

Restricţii şi precizări

  • 1 ⩽ n, k ⩽ 2.000.000.000

Exemplul 1

Intrare
Introduceti numerele: 7 4
Ieșire
12


Exemplul 2

Intrare
Introduceti numerele: 1000000000000000000000000 1000000000000000000000000000000
Ieșire
n trebuie să fie între 1 și 2.000.000.000


Rezolvare

#0974
def validare_numere(n, k):
    if n < 1 or n > 2000000000:
        raise ValueError("n trebuie să fie între 1 și 2.000.000.000")
    if k < 1 or k > 2000000000:
        raise ValueError("k trebuie să fie între 1 și 2.000.000.000")


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__':
    try:
        n, k = map(int, input("Introduceti numerele: ").split())
        validare_numere(n, k)
        suma_resturilor = calc_suma_resturi(n, k)
        print(S)
    except ValueError as e:
        print(e)