#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
long long fakultaet(long long x){
if(x < 0){
//Fehler
return -1;
}
if(x == 0 || x == 1){
return 1;
}
long long erg = 2;
for(long long i = 3; i <= x; i++)
{
erg *= i;
}
return erg;
}
long double ehoch(long double x){
long double erg = 0;
long long counter = 0;
long double epsilon = 0.00001;
long double next = pow(x,counter) / fakultaet(counter);
counter++;
while(epsilon < abs(next) && counter < 100){
erg += next;
next = pow(x,counter) / fakultaet(counter);
counter++;
}
return erg;
}
int main() {
for (double x = 0; x < 10; x++)
cout << x << ": " << setprecision(10) << ehoch(x) << " <-> " << exp(x) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbG9uZyBsb25nIGZha3VsdGFldChsb25nIGxvbmcgeCl7CiAgICBpZih4IDwgMCl7CiAgICAgICAgLy9GZWhsZXIKICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAgICBpZih4ID09IDAgfHwgeCA9PSAxKXsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGxvbmcgbG9uZyBlcmcgPSAyOwogICAgZm9yKGxvbmcgbG9uZyBpID0gMzsgaSA8PSB4OyBpKyspCiAgICB7CiAgICAgICAgZXJnICo9IGk7CiAgICB9CiAgICByZXR1cm4gZXJnOyAgICAKfQoKbG9uZyBkb3VibGUgZWhvY2gobG9uZyBkb3VibGUgeCl7CiAgICBsb25nIGRvdWJsZSBlcmcgPSAwOwogICAgbG9uZyBsb25nIGNvdW50ZXIgPSAwOwogICAgbG9uZyBkb3VibGUgZXBzaWxvbiA9IDAuMDAwMDE7CiAgICBsb25nIGRvdWJsZSBuZXh0ID0gcG93KHgsY291bnRlcikgLyBmYWt1bHRhZXQoY291bnRlcik7CiAgICBjb3VudGVyKys7CiAgICB3aGlsZShlcHNpbG9uIDwgYWJzKG5leHQpICYmIGNvdW50ZXIgPCAxMDApewogICAgICAgIGVyZyArPSBuZXh0OwogICAgICAgIG5leHQgPSBwb3coeCxjb3VudGVyKSAvIGZha3VsdGFldChjb3VudGVyKTsKICAgICAgICBjb3VudGVyKys7CiAgICB9CiAgICByZXR1cm4gZXJnOwp9CgppbnQgbWFpbigpIHsKICAgIGZvciAoZG91YmxlIHggPSAwOyB4IDwgMTA7IHgrKykKCSAgY291dCA8PCB4IDw8ICI6ICIgPDwgc2V0cHJlY2lzaW9uKDEwKSA8PCBlaG9jaCh4KSA8PCAiIDwtPiAiIDw8IGV4cCh4KSA8PCBlbmRsOwoKCXJldHVybiAwOwp9