0974 - Resturi

De la Universitas MediaWiki

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

  • 1 ⩽ n, k ⩽ 2.000.000.000

Exemplul 1

Intrare
Introduceti numerele: 7 4
Ieșire
Datele introduse corespund cerintelor.
12


Exemplul 2

Intrare
Introduceti numerele: 1000000000000000000000000 1000000000000000000000000000000
Ieșire
Datele introduse nu corespund cerintelor.


Rezolvare

#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}")

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.