1961 - Cosmin: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp] == Cerinţa == Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == 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 prog...)
 
 
(Nu s-au afișat 14 versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp]
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp]
== Cerinţa ==
== Cerinţa ==
Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule.
Cosmin e pasionat de matematică. Acesta spune despre numărul '''x''' că e un număr special și că de acum încolo îl va numi “numărul lui Cosmin”.
 
Numărul '''x''' este un număr real cu proprietatea că:
 
'''x=5⋅2–√–7'''
Profesorul de informatică îi ca temă lui Cosmin să creeze un program care citește numărul natural '''n''' și afișează pe ecran primele '''n''' zecimale ale lui '''xn''', în ordinea în care apar.
 
'''Ajutați-l pe Cosmin!'''
 
== 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 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."
Programul va afișa pe ecran primele '''n''' zecimale ale lui '''xn''', în ordinea în care apar, fără spații.
 
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează pe ecran primele n zecimale ale lui xn, în ordinea în care apar.
 
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."


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


== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Datele de intrare
: 4
: Introduceti numarul de zecimale:  
; Ieșire
: 1
: Datele corespund cerințelor.
; Datele de ieșire
: 576
: Datele sunt introduse corect.
<br>
: Primele 1 cifre ale valorii aproximate pentru radicalul de 2 sunt: 0
 
== Exemplul 2 ==
; Intrare
: 16
; Ieșire
: Datele introduse nu corespund cerințelor.
<br>
== Exemplul 3 ==
; Intrare
: 7
; Ieșire
: Datele corespund cerințelor.
: 25401600
<br>
<br>


== Rezolvare ==  
== Rezolvare ==  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#4273
#1961
def patrate_perfecte(n):
import math
    patrate = []
    i = 1
    while len(patrate) < n:
        patrat = i * i
        patrate.append(patrat)
        i += 1
    return patrate




def calculeaza(numbers):
def get_input_values():
     product = 1
     n = int(input("Introduceti numarul de zecimale: "))
     for number in numbers:
     sqrt2 = math.sqrt(2)
        product *= number
    x = 5 * sqrt2 - 7
     return product
     return (n, sqrt2, x)




def validare_numar(n):
def calculate_result(x, n):
     if n < 1 or n > 10:
     x_pow_n = pow(x, n)
        return False
    result = str(x_pow_n)[:n]
     return True
    return result
 
 
def print_result(n, result):
    print("Datele sunt introduse corect.")
     print(f"Primele {n} cifre ale valorii aproximate pentru radicalul de 2 sunt: {result}")




if __name__ == '__main__':
if __name__ == '__main__':
     n = int(input("Introduceți numărul n: "))
    # Restrictii: 1 ≤ n ≤ 100.000
     if not validare_numar(n):
     n = int(input("Introduceti numarul de zecimale: "))
         print("Datele introduse nu corespund cerintelor.")
     if n < 1 or n > 100000:
    else:
         print("Datele nu corespund restricțiilor impuse.")
         squares = patrate_perfecte(n)
         exit()
        product = calculeaza(squares)
 
        print("Datele introduse corespund cerintelor.")
    sqrt2 = math.sqrt(2)
        print(product)
    x = 5 * sqrt2 - 7
 
    result = calculate_result(x, n)
    print_result(n, result)




</syntaxhighlight>
</syntaxhighlight>
'''Explicatie cod:'''
Funcția 1: get_input_values()
Această funcție va citi valorile pentru numărul de zecimale, aproximația radicalului de 2 și valoarea lui x. Ea va returna aceste valori sub forma unei liste/tupluri.
Funcția 2: calculate_result(x, n)
Această funcție va calcula valoarea lui x la puterea n și va returna primele n cifre sub forma unui string.
Funcția 3: print_result(n, result)
Această funcție va afișa rezultatul formatat.
Funcția principală: main()
Această funcție va apela celelalte funcții pentru a obține și afișa rezultatul final.

Versiunea curentă din 27 aprilie 2023 07:05

Sursa: [1]

Cerinţa

Cosmin e pasionat de matematică. Acesta spune despre numărul x că e un număr special și că de acum încolo îl va numi “numărul lui Cosmin”.

Numărul x este un număr real cu proprietatea că:

x=5⋅2–√–7 Profesorul de informatică îi dă ca temă lui Cosmin să creeze un program care citește numărul natural n și afișează pe ecran primele n zecimale ale lui xn, în ordinea în care apar.

Ajutați-l pe Cosmin!

Date de intrare

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

Date de ieșire

Programul va afișa pe ecran primele n zecimale ale lui xn, în ordinea în care apar, fără spații.

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează pe ecran primele n zecimale ale lui xn, în ordinea în care apar.

În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."

Restricţii şi precizări

1 ≤ n ≤ 100.000

Exemplul 1

Datele de intrare
Introduceti numarul de zecimale:
1
Datele de ieșire
Datele sunt introduse corect.
Primele 1 cifre ale valorii aproximate pentru radicalul de 2 sunt: 0


Rezolvare

#1961
import math


def get_input_values():
    n = int(input("Introduceti numarul de zecimale: "))
    sqrt2 = math.sqrt(2)
    x = 5 * sqrt2 - 7
    return (n, sqrt2, x)


def calculate_result(x, n):
    x_pow_n = pow(x, n)
    result = str(x_pow_n)[:n]
    return result


def print_result(n, result):
    print("Datele sunt introduse corect.")
    print(f"Primele {n} cifre ale valorii aproximate pentru radicalul de 2 sunt: {result}")


if __name__ == '__main__':
    # Restrictii: 1 ≤ n ≤ 100.000
    n = int(input("Introduceti numarul de zecimale: "))
    if n < 1 or n > 100000:
        print("Datele nu corespund restricțiilor impuse.")
        exit()

    sqrt2 = math.sqrt(2)
    x = 5 * sqrt2 - 7

    result = calculate_result(x, n)
    print_result(n, result)

Explicatie cod:

Funcția 1: get_input_values() Această funcție va citi valorile pentru numărul de zecimale, aproximația radicalului de 2 și valoarea lui x. Ea va returna aceste valori sub forma unei liste/tupluri.

Funcția 2: calculate_result(x, n) Această funcție va calcula valoarea lui x la puterea n și va returna primele n cifre sub forma unui string.

Funcția 3: print_result(n, result) Această funcție va afișa rezultatul formatat.

Funcția principală: main() Această funcție va apela celelalte funcții pentru a obține și afișa rezultatul final.