4273 - Prod PP: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp]
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp]
== Cerinţa ==
== Cerinţa ==
Să se scrie un program care citește numărul natural n și determină suma '''S=1^2+2^2+ ... + n^n'''.
Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule.
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul '''n'''.
Programul citește de la tastatură numărul '''n'''.
== Date de ieșire ==  
== Date de ieșire ==  
Programul afișează pe ecran mesajul rezultatul este '''S''', unde '''S''' reprezintă suma calculată, în caz contrar acest program va afișa "Datele introduse nu corespund cerințelor".
Programul va afișa pe ecranmesajul "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."


== Restricţii şi precizări ==
== Restricţii şi precizări ==
* 0 < '''n''' ⩽ 15
* 0 < '''n''' ⩽ 10


== Exemplul 1 ==
== Exemplul 1 ==
Line 14: Line 14:
: 4
: 4
; Ieșire
; Ieșire
: Rezultatul este 288
: Datele corespund cerințelor.
: 576
<br>
<br>
== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
Line 26: Line 28:
: 7
: 7
; Ieșire
; Ieșire
: Rezultatul este 873612
: Datele corespund cerințelor.
: 25401600
<br>
<br>
== Rezolvare ==  
== Rezolvare ==  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#0338
#4273
def calculeaza_suma_puterilor(n):
def patrate_perfecte(n):
     suma = 0
     patrate = []
     for i in range(1, n+1):
     i = 1
         suma += i**i
    while len(patrate) < n:
     return suma
        patrat = i * i
        patrate.append(patrat)
        i += 1
    return patrate
 
 
def calculeaza(numbers):
    product = 1
    for number in numbers:
         product *= number
     return product
 


def validare_numar(n):
def validare_numar(n):
     if n <= 0 or n > 15:
     if n < 1 or n > 10:
        return False
    return True
 
 
if __name__ == '__main__':
    n = int(input("Introduceți numărul n: "))
    if not validare_numar(n):
         print("Datele introduse nu corespund cerintelor.")
         print("Datele introduse nu corespund cerintelor.")
        return False
     else:
     else:
         return True
         squares = patrate_perfecte(n)
        product = calculeaza(squares)
        print("Datele introduse corespund cerintelor.")
        print(product)


if __name__ == '__main__':
    n = int(input("Introduceti numarul n: "))
    if validare_numar(n):
        S = calculeaza_suma_puterilor(n)
        print("Rezultatul este", S)


</syntaxhighlight>
</syntaxhighlight>
== Explicatie rezolvare ==
Acest program primește de la utilizator un număr întreg n și calculează produsul primelor n pătrate perfecte.
Funcția patrate_perfecte(n) primește n ca parametru și întoarce o listă de n pătrate perfecte. Funcția utilizează un loop while pentru a genera pătrate perfecte, adăugându-le într-o listă numită patrate.
Funcția calculeaza(numbers) primește o listă de numere și calculează produsul lor folosind un loop for.
Funcția validare_numar(n) primește n ca parametru și verifică dacă numărul este între 1 și 10.
În funcția principală (if __name__ == '__main__':), programul începe prin citirea inputului de la utilizator și apoi verifică dacă numărul introdus este valid prin intermediul funcției validare_numar(n). Dacă inputul este invalid, programul afișează un mesaj de eroare. Dacă inputul este valid, programul apelează funcția patrate_perfecte(n) și calculeaza(numbers) pentru a calcula produsul pătratelor perfecte. Afișează apoi mesajul "Datele introduse corespund cerințelor" și produsul calculat.

Latest revision as of 13:01, 9 April 2023

Sursa: [1]

Cerinţa[edit | edit source]

Se dă numărul natural nenul n. Să se determine produsul primelor n pătrate perfecte nenule.

Date de intrare[edit | edit source]

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

Date de ieșire[edit | edit source]

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

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

  • 0 < n ⩽ 10

Exemplul 1[edit | edit source]

Intrare
4
Ieșire
Datele corespund cerințelor.
576


Exemplul 2[edit | edit source]

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


Exemplul 3[edit | edit source]

Intrare
7
Ieșire
Datele corespund cerințelor.
25401600


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 4273

def patrate_perfecte(n):

   patrate = []
   i = 1
   while len(patrate) < n:
       patrat = i * i
       patrate.append(patrat)
       i += 1
   return patrate


def calculeaza(numbers):

   product = 1
   for number in numbers:
       product *= number
   return product


def validare_numar(n):

   if n < 1 or n > 10:
       return False
   return True


if __name__ == '__main__':

   n = int(input("Introduceți numărul n: "))
   if not validare_numar(n):
       print("Datele introduse nu corespund cerintelor.")
   else:
       squares = patrate_perfecte(n)
       product = calculeaza(squares)
       print("Datele introduse corespund cerintelor.")
       print(product)


</syntaxhighlight>

Explicatie rezolvare[edit | edit source]

Acest program primește de la utilizator un număr întreg n și calculează produsul primelor n pătrate perfecte.

Funcția patrate_perfecte(n) primește n ca parametru și întoarce o listă de n pătrate perfecte. Funcția utilizează un loop while pentru a genera pătrate perfecte, adăugându-le într-o listă numită patrate.

Funcția calculeaza(numbers) primește o listă de numere și calculează produsul lor folosind un loop for.

Funcția validare_numar(n) primește n ca parametru și verifică dacă numărul este între 1 și 10.

În funcția principală (if __name__ == '__main__':), programul începe prin citirea inputului de la utilizator și apoi verifică dacă numărul introdus este valid prin intermediul funcției validare_numar(n). Dacă inputul este invalid, programul afișează un mesaj de eroare. Dacă inputul este valid, programul apelează funcția patrate_perfecte(n) și calculeaza(numbers) pentru a calcula produsul pătratelor perfecte. Afișează apoi mesajul "Datele introduse corespund cerințelor" și produsul calculat.