0048 - Sumă Pătrate1: Difference between revisions

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


== 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 rând nou programul afișează rezultatul lui S, unde S reprezintă suma calculată. Î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
* 0 < '''n''' < 1000


== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Intrare
: 4
: Introduceti numarul n: 20
; Ieșire
; Ieșire
: Datele corespund cerințelor.
: Datele introduse corespund cerintelor.
: 576
: 30
<br>
<br>


== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
: 16
: Introduceti numarul n: 1001
; 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 31:
#0048
#0048
import math
import math


def este_patrat_perfect(numar):
def este_patrat_perfect(numar):
     rad = int(math.sqrt(numar))
     radadica = int(math.sqrt(numar))
     return rad * rad == numar
     return radadica * radadica == numar




Line 54: Line 48:
def valideaza_numar(n):
def valideaza_numar(n):
     if n <= 0:
     if n <= 0:
         print("Numarul trebuie sa fie mai mare decat 0")
         print("Datele introdsue corespund cerintelor.")
         exit()
         exit()
     if n >= 1000:
     if n >= 1000:
         print("Numarul trebuie sa fie mai mic decat 1000")
         print("Datele introduse nu corespund cerintelor.")
         exit()
         exit()


Line 65: Line 59:
     valideaza_numar(n)
     valideaza_numar(n)
     rezultat = suma_patrate_perfecte_pana_la(n)
     rezultat = suma_patrate_perfecte_pana_la(n)
     print("Rezultatul este", rezultat)
     print("Datele introduse corespund cerintelor.\n", rezultat)




</syntaxhighlight>
</syntaxhighlight>
==Explicatie rezolvare==
Acest program calculează suma pătratelor perfecte mai mici sau egale cu un număr dat "n".
Funcția "este_patrat_perfect" verifică dacă un număr este pătrat perfect. În cazul în care numărul este pătrat perfect, aceasta va returna valoarea True, altfel va returna valoarea False.
Funcția "suma_patrate_perfecte_pana_la" calculează suma tuturor pătratelor perfecte mai mici sau egale cu numărul dat "n". Se utilizează o buclă "for" pentru a itera prin numerele de la 1 până la "n" și se verifică dacă fiecare număr este pătrat perfect. În caz afirmativ, numărul este adăugat la variabila "suma". La final, funcția returnează valoarea "suma".
Funcția "valideaza_numar" verifică dacă numărul introdus este mai mare decât 0 și mai mic decât 1000. În cazul în care numărul nu se încadrează în această plajă, programul va afișa un mesaj de eroare și se va încheia prin apelarea funcției "exit()".
În secțiunea "if __name__ == '__main__':", programul primește un input de la utilizator pentru a afla numărul "n". Acesta este validat apelând funcția "valideaza_numar". Dacă numărul este valid, programul va apela funcția "suma_patrate_perfecte_pana_la" și va afișa rezultatul. În caz contrar, programul va afișa un mesaj de eroare și se va încheia prin apelarea funcției "exit()".

Latest revision as of 23:07, 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 pătratelor perfecte mai mici sau egale cu n.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

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 rând nou programul afișează rezultatul lui S, unde S reprezintă suma calculată. În caz contrar, se va afișa mesajul: "Datele introduse nu corespund cerintelor."

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

  • 0 < n < 1000

Exemplul 1[edit | edit source]

Intrare
Introduceti numarul n: 20
Ieșire
Datele introduse corespund cerintelor.
30


Exemplul 2[edit | edit source]

Intrare
Introduceti numarul n: 1001
Ieșire
Datele introduse nu corespund cerintelor.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 0048

import math


def este_patrat_perfect(numar):

   radadica = int(math.sqrt(numar))
   return radadica * radadica == numar


def suma_patrate_perfecte_pana_la(n):

   suma = 0
   for i in range(1, n+1):
       if este_patrat_perfect(i):
           suma += i
   return suma


def valideaza_numar(n):

   if n <= 0:
       print("Datele introdsue corespund cerintelor.")
       exit()
   if n >= 1000:
       print("Datele introduse nu corespund cerintelor.")
       exit()


if __name__ == '__main__':

   n = int(input("Introduceti numarul n: "))
   valideaza_numar(n)
   rezultat = suma_patrate_perfecte_pana_la(n)
   print("Datele introduse corespund cerintelor.\n", rezultat)


</syntaxhighlight>

Explicatie rezolvare[edit | edit source]

Acest program calculează suma pătratelor perfecte mai mici sau egale cu un număr dat "n".

Funcția "este_patrat_perfect" verifică dacă un număr este pătrat perfect. În cazul în care numărul este pătrat perfect, aceasta va returna valoarea True, altfel va returna valoarea False.

Funcția "suma_patrate_perfecte_pana_la" calculează suma tuturor pătratelor perfecte mai mici sau egale cu numărul dat "n". Se utilizează o buclă "for" pentru a itera prin numerele de la 1 până la "n" și se verifică dacă fiecare număr este pătrat perfect. În caz afirmativ, numărul este adăugat la variabila "suma". La final, funcția returnează valoarea "suma".

Funcția "valideaza_numar" verifică dacă numărul introdus este mai mare decât 0 și mai mic decât 1000. În cazul în care numărul nu se încadrează în această plajă, programul va afișa un mesaj de eroare și se va încheia prin apelarea funcției "exit()".

În secțiunea "if __name__ == '__main__':", programul primește un input de la utilizator pentru a afla numărul "n". Acesta este validat apelând funcția "valideaza_numar". Dacă numărul este valid, programul va apela funcția "suma_patrate_perfecte_pana_la" și va afișa rezultatul. În caz contrar, programul va afișa un mesaj de eroare și se va încheia prin apelarea funcției "exit()".