0056 - Numărare Perechi: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
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...
 
Dragos1234 (talk | contribs)
Line 34: Line 34:
== Rezolvare ==  
== Rezolvare ==  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#4273
#0056
def patrate_perfecte(n):
def is_valid(number):
     patrate = []
     return -1000000 < number < 1000000 or number == 0
    i = 1
    while len(patrate) < n:
        patrat = i * i
        patrate.append(patrat)
        i += 1
    return patrate




def calculeaza(numbers):
def get_valid_input(prompt):
     product = 1
     """
     for number in numbers:
    Returnează un număr valid introdus de utilizator.
         product *= number
    Prompt-ul este afișat la consolă.
     return product
    """
    num = int(input(prompt))
     while not is_valid(num):
         print("Valoarea citită nu este validă!")
        num = int(input(prompt))
     return num




def validare_numar(n):
def count_matching_digits():
     if n < 1 or n > 10:
     """
        return False
    Calculează numărul de cifre care se potrivesc în doi numere introduse de utilizator.
     return True
    """
    num1 = get_valid_input("Introduceți primul număr: ")
     num2 = get_valid_input("Introduceți al doilea număr: ")


    if num1 < 0:
        num1 = -num1
    if num2 < 0:
        num2 = -num2


if __name__ == '__main__':
     count = 0
     n = int(input("Introduceți numărul n: "))
     while num2:
     if not validare_numar(n):
         if num1 % 10 == num2 % 10:
         print("Datele introduse nu corespund cerintelor.")
            count += 1
    else:
         num1 = num2
        squares = patrate_perfecte(n)
         num2 = get_valid_input("Introduceți următorul număr: ")
         product = calculeaza(squares)
         if num2 < 0:
         print("Datele introduse corespund cerintelor.")
            num2 = -num2
         print(product)


    print(f"Numărul de cifre care se potrivesc este: {count}")
def main():
    count_matching_digits()
main()


</syntaxhighlight>
</syntaxhighlight>

Revision as of 10:05, 9 April 2023

Sursa: [1]

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 programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."

Restricţii şi precizări

  • 0 < n ⩽ 10

Exemplul 1

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


Exemplul 2

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


Exemplul 3

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


Rezolvare

<syntaxhighlight lang="python" line>

  1. 0056

def is_valid(number):

   return -1000000 < number < 1000000 or number == 0


def get_valid_input(prompt):

   """
   Returnează un număr valid introdus de utilizator.
   Prompt-ul este afișat la consolă.
   """
   num = int(input(prompt))
   while not is_valid(num):
       print("Valoarea citită nu este validă!")
       num = int(input(prompt))
   return num


def count_matching_digits():

   """
   Calculează numărul de cifre care se potrivesc în doi numere introduse de utilizator.
   """
   num1 = get_valid_input("Introduceți primul număr: ")
   num2 = get_valid_input("Introduceți al doilea număr: ")
   if num1 < 0:
       num1 = -num1
   if num2 < 0:
       num2 = -num2
   count = 0
   while num2:
       if num1 % 10 == num2 % 10:
           count += 1
       num1 = num2
       num2 = get_valid_input("Introduceți următorul număr: ")
       if num2 < 0:
           num2 = -num2
   print(f"Numărul de cifre care se potrivesc este: {count}")


def main():

   count_matching_digits()


main()

</syntaxhighlight>