3973 - Logaritm

From Bitnami MediaWiki
Revision as of 14:26, 4 November 2023 by Ghisa Catalin (talk | contribs) (Pagină nouă: == 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++ == Exem...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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)
  1. Citirea datelor de intrare

x = float(input())

  1. Calcularea și afișarea rezultatului

print(ln(x))

</syntaxhighlight>