0974 - Resturi: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
 
(15 intermediate revisions by 2 users not shown)
Line 4: Line 4:


== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul '''n'''.
Programul citește de la tastatură numerele '''n și k''', separate prin spațiu.
 
== Date de ieșire ==  
== Date de ieșire ==  
Programul va afișa pe ecran,  mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul '''P''' , reprezentând produsul primelor '''n''' pătrate perfecte nenule, în caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."
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 ==
* 0 < '''n''' ⩽ 10
* 1 ⩽ '''n, k''' ⩽ 2.000.000.000


== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Intrare
: 4
: Introduceti numerele: 7 4
; Ieșire
; Ieșire
: Datele corespund cerințelor.
: Datele introduse corespund cerintelor.
: 576
: 12
<br>
<br>


== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
: 16
: Introduceti numerele: 1000000000000000000000000 1000000000000000000000000000000
; Ieșire
; Ieșire
: Datele introduse nu corespund cerințelor.
: Datele introduse nu corespund cerintelor.
<br>
== Exemplul 3 ==
; Intrare
: 7
; Ieșire
: Datele corespund cerințelor.
: 25401600
<br>
<br>


Line 38: 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()




def calc_suma_resturi(n, k):
def calc_suma_resturi(n, k):
     S = 0
     suma_resturilor = 0
     for i in range(1, n+1):
     for i in range(1, n+1):
         S += i % k
         suma_resturilor += i % k
     return S
     return suma_resturilor




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>


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

  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.