3977 - Expo N: Diferență între versiuni

De la Universitas MediaWiki
Linia 7: Linia 7:


== Date de ieșire ==  
== Date de ieșire ==  
Acest program calculează exponentul maxim al unei puteri a lui 2 care este mai mic sau egal cu numărul n introdus de utilizator.
Programul calculează exponentul maxim al puterii lui 2 care este mai mic sau egal cu numărul dat de intrare.


Datele de ieșire pentru acest program sunt un mesaj afișat pe ecran care indică exponentul maxim calculat pentru numărul n introdus de utilizator. Mesajul afișat va fi de forma: "Exponentul maxim este: X", unde X va fi valoarea calculată pentru exponentul maxim al lui 2 care este mai mic sau egal cu n.
Datele de ieșire pentru acest program sunt un singur număr întreg, reprezentând exponentul maxim calculat. În cazul în care numărul dat de intrare nu se află în intervalul [1, 2.000.000.000], programul va afișa un mesaj de eroare.


== Restricţii şi precizări ==
== Restricţii şi precizări ==

Versiunea de la data 25 martie 2023 15:29

Sursa: [1]

Cerinţa

Se citește numărul natural n. Să se determine exponentul maxim e cu proprietatea că 2^e ≤ n.

Date de intrare

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

Date de ieșire

Programul calculează exponentul maxim al puterii lui 2 care este mai mic sau egal cu numărul dat de intrare.

Datele de ieșire pentru acest program sunt un singur număr întreg, reprezentând exponentul maxim calculat. În cazul în care numărul dat de intrare nu se află în intervalul [1, 2.000.000.000], programul va afișa un mesaj de eroare.

Restricţii şi precizări

  • 1 ⩽ n ⩽ 2.000.000.000

Exemplul 1

Intrare
Introduceți numărul n: 40
Ieșire
Exponentul maxim este: 5


Exemplul 2

Intrare
Introduceți numărul n: 20000000000000000000000000000
Ieșire
Eroare: n trebuie să fie între 1 și 2.000.000.000


Exemplul 3

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


Rezolvare

#3977
def exponent_maxim(n):
    e = 0
    while 2**e <= n:
        e += 1
    return e-1


if __name__ == '__main__':
    n = int(input("Introduceți numărul n: "))
    if n < 1 or n > 2000000000:
        print("Eroare: n trebuie să fie între 1 și 2.000.000.000")
    else:
        print("Exponentul maxim este:", exponent_maxim(n))