# PBinfo #3973 – Logaritm – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

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

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
long double x;
long double cb(long double st, long double dr) {
    long double mij = (st + dr) / 2, val = exp(mij);
    if(abs(val - x) < 0.0000001) return mij;
    if(val < x) return cb(mij, dr);
    return cb(st, mij);
}
int main() {
    cin >> x;
    cout << fixed << setprecision(6) << (int)(cb(0, 22) * 1000000) / 1000000.0;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3973)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3973/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3973/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
