# PBinfo #3260 – Invers – Rezolvare C++

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

## Enunț

Cerința
Veșnicul Gigel vrea să dea la Facultatea de Informatică din Iași pentru că e #ceaMaiTare. De asta s-a apucat de probleme pe pbinfo și a dat peste următoarea problema ce i-a plăcut atât de mult încât vă provoacă și pe voi să o rezolvați:

Se dă funcția \(f(x) = sin(x) + sin(2*x) + x\) și o valoare \(y\). Știind că funcția este strict crescătoare pe intervalul \([0,1)\), se cere să se gasească pentru ce \( x \in [0,1)  \) avem că \(f(x)≈y\) (aproximare cu 8 zecimale).

Date de intrare
Se citește de la tastatura valoarea \(y \in [0, 2.7] \).

Date de ieșire
\( x \in [0,1) \) afișat cu o aproximare de 8 zecimale precise. 

Restricții și precizări

pentru orice \(  y \in [0, 2.7] \) vom avea ca \( x \in [0, 1)  \)

Exemplu:
Intrare

1.34
Ieșire

0.35083179
Explicație
Considerand \(f(x) = sin(x) + sin(2*x) + x\) avem ca:

• f(0.35083177) = 1.33999994
• f(0.35083178) = 1.33999998
• f(0.35083179) = 1.34000001
• f(0.35083180) = 1.34000005

După cum se observă, valoarea cea mai apropiată de \(1.34\) în aproximarea cu 8 zecimale este \(0.35083179\), valoare ce este considerată a fi corectă (deși imprecisă, este cea mai apropiată valoare ce ar putea fi dată lui x pentru ca \(f(x)≈1.34\)).

## Cod sursă C++

```cpp
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
double fct(double x){
    return sin(x)+sin(2*x)+ x;
}
double cb(double x,double st,double dr){
    double mij=(st+dr)/2.;
    if(dr-st<0.00000001) return mij;
    if (fct(mij)<x) return cb(x,mij,dr );
    return cb(x,st,mij);
}
int main()
{
    double a;
    cin >> a;
    double x = cb(a,0,1);
    cout << std::fixed << std::setprecision(8) << x << endl;
    return 0;
}
```

## Resurse

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