2747 - Log

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.

Cerința

Se dau numerele n și m. Să se determine exponentul la care se ridică n pentru a obține m.

Date de intrare

Programul citește de la tastatură numerele n și m, separate prin spații.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi programul va afișa pe ecran exponentul la care se ridică n pentru a obține m. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."

Restricții și precizări

1 ≤ n , m ≤ 1.000.000 n ≠ 1 se garantează ca m este putere a lui n</span.

Exemplu:

Intrare
2 4

Ieșire

Datele sunt introduse corect
2

Rezolvare

def validare_date(n, m):
    if not (1 <= n <= 1000000) or not (1 <= m <= 1000000):
        print("n și m trebuie să fie între 1 și 1.000.000.")
        return False
    if n == 1:
        print("n trebuie să fie diferit de 1.")
        return False
    if m % n != 0:
        print("m trebuie să fie putere a lui n.")
        return False
    return True


def compute_exponent(n, m):
    #Determină exponentul la care trebuie ridicat n pentru a obține m.
    exponent = 1
    while m > n:
        m //= n
        exponent += 1
    print(f"Exponentul la care trebuie ridicat {n} pentru a obține {m} este: {exponent}")


if __name__ == "__main__":
    # Citire input și validare
    n, m = map(int, input("Introduceți n și m, separate prin spațiu: ").split())
    if validare_date(n, m):
        exponent = compute_exponent(n, m)
    else:
        while not validare_date(n, m):
            n, m = map(int, input("Introduceți n și m, separate prin spațiu: ").split())

Explicatie cod:

Codul Python de mai sus definește două funcții: validare_date și compute_exponent. Iată o explicație pentru fiecare dintre ele:

Funcția validare_date(n, m): Această funcție primește doi parametri, n și m, reprezentând două numere întregi. Verifică mai multe condiții pentru a valida datele introduse: Verifică dacă n și m sunt ambele între 1 și 1.000.000. Dacă nu sunt, afișează un mesaj de eroare și returnează False. Verifică dacă n este diferit de 1. Dacă nu este, afișează un mesaj de eroare și returnează False. Verifică dacă m este o putere a lui n. Dacă nu este, afișează un mesaj de eroare și returnează False. Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide. Funcția compute_exponent(n, m): Această funcție primește doi parametri, n și m, reprezentând două numere întregi. Funcția calculează exponentul la care trebuie ridicat n pentru a obține m. Inițial, exponentul este setat la 1. Apoi, într-un ciclu while, m este împărțit la n până când m devine mai mic sau egal cu n. În fiecare iterație, exponentul este incrementat cu 1. La final, funcția afișează exponentul. În cadrul secțiunii if __name__ == "__main__": se realizează următoarele acțiuni:

Se citește de la tastatură două numere întregi separate prin spațiu, n și m, și sunt convertite în variabilele corespunzătoare. Se apelează funcția validare_date(n, m) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția compute_exponent(n, m) pentru a calcula și afișa exponentul. Dacă datele nu sunt valide, se intră într-un ciclu while până când se introduc date valide. În fiecare iterație se solicită introducerea valorilor n și m, iar apoi se reevaluează validitatea acestora. Ciclul se oprește când se introduc date valide și se calculează și afișează exponentul corespunzător.