3977 - Expo N: Diferență între versiuni

De la Universitas MediaWiki
 
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
Sursa: [https://www.pbinfo.ro/probleme/3977/expon]
Sursa: [https://www.pbinfo.ro/probleme/3977/expon]
== Cerinţa ==
== Cerinţa ==
Se citește numărul natural '''n'''. Să se determine exponentul maxim e cu proprietatea că '''2<sup>e''' ≤ n'''.
Se citește numărul natural '''n'''. Să se determine exponentul maxim e cu proprietatea că '''2<sup>e''' ≤ '''n'''.


== Date de intrare ==
== Date de intrare ==
Linia 7: Linia 7:


== Date de ieșire ==  
== Date de ieșire ==  
Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rând nou va afișa valoarea exponentului maxim. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse.
Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele introduse corespund cerintelor", apoi pe un rând nou va afișa valoarea exponentului maxim. În caz contrar, se va afișa mesajul:" Datele introduse nu corespund cerintelor."


== Restricţii şi precizări ==
== Restricţii şi precizări ==
Linia 51: Linia 51:


==Explicatie rezolvare==
==Explicatie rezolvare==
Acest program primește un număr întreg de la utilizator și verifică dacă se încadrează între 1 și 2 miliarde. Dacă numărul este valid, programul determină cel mai mare exponent al lui 2 care nu depășește numărul dat. Aceasta se realizează prin creșterea exponentului e începând cu 0 până când 2^e depășește numărul dat și apoi returnând e-1 (deoarece e a fost deja incrementat cu 1 în ultima iterație în care 2^e depășește numărul dat).
Dacă numărul dat nu este valid, programul afișează un mesaj corespunzător.

Versiunea curentă din 11 mai 2023 23:03

Sursa: [1]

Cerinţa

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

Date de intrare

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

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele introduse corespund cerintelor", apoi pe un rând nou va afișa valoarea exponentului maxim. În caz contrar, se va afișa mesajul:" Datele introduse nu corespund cerintelor."

Restricţii şi precizări

  • 1 ⩽ n ⩽ 2.000.000.000

Exemplul 1

Intrare
Introduceți numărul n: 40
Ieșire
Datele introduse corespund cerintelor.
5


Exemplul 2

Intrare
Introduceți numărul n: 20000000000000000000000000000
Ieșire
Datele introduse nu corespund cerintelor.


Rezolvare

#3977
def validare(n):
    return 1 <= n <= 2000000000


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 validare(n) is True:
        print(f"Datele introduse corespund cerintelor\n{exponent_maxim(n)}")
    else:
        print("Datele introduse nu corespund cerintelor.")

Explicatie rezolvare

Acest program primește un număr întreg de la utilizator și verifică dacă se încadrează între 1 și 2 miliarde. Dacă numărul este valid, programul determină cel mai mare exponent al lui 2 care nu depășește numărul dat. Aceasta se realizează prin creșterea exponentului e începând cu 0 până când 2^e depășește numărul dat și apoi returnând e-1 (deoarece e a fost deja incrementat cu 1 în ultima iterație în care 2^e depășește numărul dat).

Dacă numărul dat nu este valid, programul afișează un mesaj corespunzător.