0377 - Difi Min: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: == Cerinţa == Se citește numărul natural nenul numit '''numar'''. Determinați două numere naturale '''a''' , '''b''', cu proprietatea că: *'''a * b = n''' * '''a ⩽ b''' * diferența '''b-a''' este minimă == Date de intrare == Programul citește de la tastatură un număr natural ”'''numar'''”. == Date de ieşire == Programul afișează pe ecran numerele '''a b''', separate prin exact un spațiu, cu semnificația din enunț. == Restricții și precizări == * nu...)
 
Fără descriere a modificării
Linia 15: Linia 15:
: 70
: 70
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 7 10
: 7 10
== Rezolvare ==
== Rezolvare ==

Versiunea de la data 11 aprilie 2023 10:27

Cerinţa

Se citește numărul natural nenul numit numar. Determinați două numere naturale a , b, cu proprietatea că:

  • a * b = n
  • a ⩽ b
  • diferența b-a este minimă

Date de intrare

Programul citește de la tastatură un număr natural ”numar”.

Date de ieşire

Programul afișează pe ecran numerele a b, separate prin exact un spațiu, cu semnificația din enunț.

Restricții și precizări

  • numar ∈ Ν
  • 0 ⩽ numar ⩽ 1.000.000.000

Exemplu

Intrare
70
Ieșire
Datele de intrare corespund restricțiilor impuse.
7 10

Rezolvare

def validare_date(numar):
    flag = False
    if numar.isdigit():
        if 0 <= int(numar) <= 1_000_000_000:
            flag = True
    return flag


def sqrt(numar):  # Această funcție calculează radicalul pătrat dintr-un număr întreg
    x = numar
    y = (x + 1) // 2
    while y < x:
        x = y
        y = (x + numar // x) // 2
    return x


def difi_min(numar):  # Această funcție găsește cea mai mică pereche de numere întregi a și b astfel încât a * b = numar.
    a = sqrt(numar)  # Începe prin a calcula radicalul pătrat al numărului și apoi scade 1 din a până când numărul este divizibil cu a.
    while numar % a != 0:
        a -= 1
        b = numar // a  # La fiecare pas, calculează și valoarea corespunzătoare a lui b și le afișează pe ambele.
        print(a, b)


if __name__ == '__main__':
    numar = input()
    if validare_date(numar):
        print("\nDatele de intrare corespund restricțiilor impuse.\n")
        difi_min(int(numar))
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")