0047 - Sumă Pătrate: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
Sursa: [https://www.pbinfo.ro/probleme/47/sumapatrate]
Sursa: [https://www.pbinfo.ro/probleme/47/sumapatrate]
== Cerinţa ==
== Cerinţa ==
Se dau n numere naturale. Pentru fiecare numar '''x''', calculati '''1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...x)'''.
Să se scrie un program care citește numărul natural '''n''' și determină suma primelor '''n''' pătrate perfecte nenule.


== Date de intrare ==
== Date de intrare ==
Line 7: Line 7:


== Date de ieșire ==  
== Date de ieșire ==  
Programul afișează pe prima linie a ecranului mesajul Rezultatul este '''S''', unde '''S''' reprezintă suma calculată.
Acest program calculează suma primelor n numere întregi care sunt pătrate perfecte. Datele de ieșire pentru acest program sunt:
 
* Dacă datele de intrare nu corespund cerințelor (numărul introdus este mai mic sau egal cu 0 sau mai mare sau egal cu 1000), programul va afișa "Datele introduse nu corespund cerințelor."
 
* Dacă datele de intrare sunt corecte, programul va calcula suma primelor n numere întregi care sunt pătrate perfecte și va afișa rezultatul cu ajutorul frazei "Datele introduse corespund cerintelor" urmată de valoarea calculată.
 
== Restricţii şi precizări ==
== Restricţii şi precizări ==
* 1 < '''n''' < 1000
* 1 < '''n''' < 1000
Line 22: Line 27:
: 6
: 6
; Ieșire
; Ieșire
: Rezultatul este 91
: Datele introduse corespund cerintelor.
: 91
<br>
<br>
== Exemplul 3 ==
== Exemplul 3 ==
; Intrare
; Intrare
: 7
: 7
; Ieșire
; Ieșire
: Rezultatul este 140
: Datele introduse corespund cerintelor.
: 140
<br>
<br>


Line 63: Line 71:


     sum = compute_sum(n)
     sum = compute_sum(n)
     print("Rezultatul este", sum)
     print(f"Datele introduse corespund cerintelor.\n{sum}")


</syntaxhighlight>
</syntaxhighlight>
== Explicatie rezolvare ==
Acest program calculează suma primelor n numere întregi care sunt pătrate perfecte, unde n este introdus de utilizator.
Funcția '''validate_input(n)''' verifică dacă n este un număr întreg pozitiv mai mic decât 1000, returnând False dacă nu este îndeplinită această condiție și True în caz contrar.
Funcția '''compute_sum(n)''' calculează suma primelor n numere întregi care sunt pătrate perfecte prin utilizarea unui loop while care se execută până când s-au găsit n numere întregi pătrate perfecte. În interiorul loop-ului, fiecare număr întreg este verificat pentru a vedea dacă este pătrat perfect. Dacă este, numărul este adăugat la suma totală și numărul de numere pătrate perfecte găsite până în prezent este incrementat.
În funcția principală '''(if __name__ == '__main__':)''', utilizatorul este întâi rugat să introducă un număr întreg pozitiv, n, și acesta este validat cu ajutorul funcției '''validate_input(n)'''. Dacă numărul nu este valid, utilizatorul este rugat să introducă un alt număr până când se introduce un număr valid. Dacă numărul este valid, '''funcția compute_sum(n)''' este apelată și afișează suma primelor n numere întregi care sunt pătrate perfecte.

Latest revision as of 22:57, 11 May 2023

Sursa: [1]

Cerinţa[edit | edit source]

Să se scrie un program care citește numărul natural n și determină suma primelor n pătrate perfecte nenule.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire[edit | edit source]

Acest program calculează suma primelor n numere întregi care sunt pătrate perfecte. Datele de ieșire pentru acest program sunt:

  • Dacă datele de intrare nu corespund cerințelor (numărul introdus este mai mic sau egal cu 0 sau mai mare sau egal cu 1000), programul va afișa "Datele introduse nu corespund cerințelor."
  • Dacă datele de intrare sunt corecte, programul va calcula suma primelor n numere întregi care sunt pătrate perfecte și va afișa rezultatul cu ajutorul frazei "Datele introduse corespund cerintelor" urmată de valoarea calculată.

Restricţii şi precizări[edit | edit source]

  • 1 < n < 1000

Exemplul 1[edit | edit source]

Intrare
0
Ieșire
Datele introduse nu corespund cerințelor.


Exemplul 2[edit | edit source]

Intrare
6
Ieșire
Datele introduse corespund cerintelor.
91


Exemplul 3[edit | edit source]

Intrare
7
Ieșire
Datele introduse corespund cerintelor.
140


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 0047

import math


def validate_input(n):

   if n <= 0 or n >= 1000:
       return False
   else:
       return True


def compute_sum(n):

   sum = 0
   count = 0
   num = 1
   while count < n:
       if math.sqrt(num) % 1 == 0:  # Verifică dacă numărul este pătrat perfect
           sum += num
           count += 1
       num += 1
   return sum


if __name__ == '__main__':

   n = int(input("Introduceti n: "))
   while not validate_input(n):
       print("Datele introduse nu corespund cerintelor.")
       n = int(input("Introduceti n: "))
   sum = compute_sum(n)
   print(f"Datele introduse corespund cerintelor.\n{sum}")

</syntaxhighlight>

Explicatie rezolvare[edit | edit source]

Acest program calculează suma primelor n numere întregi care sunt pătrate perfecte, unde n este introdus de utilizator.

Funcția validate_input(n) verifică dacă n este un număr întreg pozitiv mai mic decât 1000, returnând False dacă nu este îndeplinită această condiție și True în caz contrar.

Funcția compute_sum(n) calculează suma primelor n numere întregi care sunt pătrate perfecte prin utilizarea unui loop while care se execută până când s-au găsit n numere întregi pătrate perfecte. În interiorul loop-ului, fiecare număr întreg este verificat pentru a vedea dacă este pătrat perfect. Dacă este, numărul este adăugat la suma totală și numărul de numere pătrate perfecte găsite până în prezent este incrementat.

În funcția principală (if __name__ == '__main__':), utilizatorul este întâi rugat să introducă un număr întreg pozitiv, n, și acesta este validat cu ajutorul funcției validate_input(n). Dacă numărul nu este valid, utilizatorul este rugat să introducă un alt număr până când se introduce un număr valid. Dacă numărul este valid, funcția compute_sum(n) este apelată și afișează suma primelor n numere întregi care sunt pătrate perfecte.