0047 - Sumă Pătrate

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Sursa: [1]

Cerinţa

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

Date de intrare

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

Date de ieșire

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

  • 1 < n < 1000

Exemplul 1

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


Exemplul 2

Intrare
6
Ieșire
Datele introduse corespund cerintelor.
91


Exemplul 3

Intrare
7
Ieșire
Datele introduse corespund cerintelor.
140


Rezolvare

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

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.