3973 - Logaritm
Cerinţa
Dându-se un număr real x, să se scrie un program care calculează ln(x) cu 6 zecimale exacte.
Date de intrare
Programul citește de la tastatură numărul real x.
Date de ieșire
Programul va afișa pe ecran rezultatul cu 6 zecimale exacte.
Restricţii şi precizări
- 1 ⩽ x ⩽ 2.000.000.000.
- x va avea cel mult 6 zecimale.
- Nu se vor folosi funcțiile logaritmice ale limbajului C++
Exemplu
- Intrare
- 5.12
- Ieșire
- 1.633154
Rezolvare
<syntaxhighlight lang="python" line>
import math
def ln(x):
# Precizia pe care o dorim epsilon = 1e-10
# Inițializăm limitele intervalului pentru metoda bisecției low = 0 high = x if x > 1 else 1
# Aplicăm metoda bisecției while high - low > epsilon: mid = (low + high) / 2 if math.exp(mid) < x: low = mid else: high = mid
# Returnăm rezultatul cu 6 zecimale exacte return round((low + high) / 2, 6)
- Citirea datelor de intrare
x = float(input())
- Calcularea și afișarea rezultatului
print(ln(x))
</syntaxhighlight>