1915 - Numar Minim 1: Difference between revisions

From Bitnami MediaWiki
Sinn Erich (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...
 
Sinn Erich (talk | contribs)
Line 34: Line 34:
== Rezolvare ==  
== Rezolvare ==  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#4273
#1915
def patrate_perfecte(n):
def get_next_number(numar, n):
     patrate = []
     """
     i = 1
    Returnează următorul număr natural de n cifre care urmează după numar.
     while len(patrate) < n:
     """
        patrat = i * i
     return numar + 10**(n - len(str(numar))) if numar + 1 >= 10**(n - 1) else 10**(n - 1)
        patrate.append(patrat)
        i += 1
    return patrate


def find_number(n, b, r):
    """
    Găsește cel mai mic număr natural de n cifre care împărțit la b dă restul r.
    """
    numar = 0
    while True:
        numar = get_next_number(numar, n)
        if numar % b == r:
            return numar


def calculeaza(numbers):
def main():
     product = 1
     """
     for number in numbers:
    Funcția principală care citește numerele de la tastatură și afișează numărul cerut.
        product *= number
    """
     return product
    n = int(input("Introduceți numărul de cifre: "))
     b = int(input("Introduceți divizorul: "))
    r = int(input("Introduceți restul: "))
    numar_cautat = find_number(n, b, r)
     print("Cel mai mic număr de", n, "cifre care împărțit la", b, "dă restul", r, "este", numar_cautat)


# Apelăm funcția principală
main()


def validare_numar(n):
</syntaxhighlight>
    if n < 1 or n > 10:
'''Explicatie cod:'''
        return False
Acest cod conține 3 funcții și o funcție principală:
    return True


Funcția get_next_number(numar, n) primește un număr natural numar și numărul de cifre n și returnează următorul număr natural de n cifre care urmează după numar. Pentru aceasta, funcția adaugă 10**(n - len(str(numar))) la numar dacă numar + 1 este mai mare sau egal cu 10**(n - 1) (adică numărul numar + 1 are cel puțin n cifre), altfel returnează 10**(n - 1).


if __name__ == '__main__':
Funcția find_number(n, b, r) primește numărul de cifre n, divizorul b și restul r și returnează cel mai mic număr natural de n cifre care împărțit la b dă restul r. Funcția caută numărul începând de la 0, apelând funcția get_next_number() și verificând dacă numărul respectiv împărțit la b dă restul r. Dacă da, atunci funcția returnează numărul găsit.
    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)


Funcția principală main() citește numerele de la tastatură și afișează numărul cerut apelând funcția find_number().


</syntaxhighlight>
Astfel, programul determină cel mai mic număr natural de n cifre care împărțit la b dă restul r folosind cele trei funcții descrise mai sus.

Revision as of 10:19, 1 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. 1915

def get_next_number(numar, n):

   """
   Returnează următorul număr natural de n cifre care urmează după numar.
   """
   return numar + 10**(n - len(str(numar))) if numar + 1 >= 10**(n - 1) else 10**(n - 1)

def find_number(n, b, r):

   """
   Găsește cel mai mic număr natural de n cifre care împărțit la b dă restul r.
   """
   numar = 0
   while True:
       numar = get_next_number(numar, n)
       if numar % b == r:
           return numar

def main():

   """
   Funcția principală care citește numerele de la tastatură și afișează numărul cerut.
   """
   n = int(input("Introduceți numărul de cifre: "))
   b = int(input("Introduceți divizorul: "))
   r = int(input("Introduceți restul: "))
   numar_cautat = find_number(n, b, r)
   print("Cel mai mic număr de", n, "cifre care împărțit la", b, "dă restul", r, "este", numar_cautat)
  1. Apelăm funcția principală

main()

</syntaxhighlight> Explicatie cod: Acest cod conține 3 funcții și o funcție principală:

Funcția get_next_number(numar, n) primește un număr natural numar și numărul de cifre n și returnează următorul număr natural de n cifre care urmează după numar. Pentru aceasta, funcția adaugă 10**(n - len(str(numar))) la numar dacă numar + 1 este mai mare sau egal cu 10**(n - 1) (adică numărul numar + 1 are cel puțin n cifre), altfel returnează 10**(n - 1).

Funcția find_number(n, b, r) primește numărul de cifre n, divizorul b și restul r și returnează cel mai mic număr natural de n cifre care împărțit la b dă restul r. Funcția caută numărul începând de la 0, apelând funcția get_next_number() și verificând dacă numărul respectiv împărțit la b dă restul r. Dacă da, atunci funcția returnează numărul găsit.

Funcția principală main() citește numerele de la tastatură și afișează numărul cerut apelând funcția find_number().

Astfel, programul determină cel mai mic număr natural de n cifre care împărțit la b dă restul r folosind cele trei funcții descrise mai sus.