#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
long double ehoch(long double x){
long double erg = -1;
long long counter = 0;
long double epsilon = 1e-16;
long double next = 1;
counter++;
while(epsilon < abs(next) && counter < 100){
erg += next;
next *= x / counter;
counter++;
}
return erg + 1;
}
int main() {
for (double x = 0; x < 10; x++)
cout << x << ": " << setprecision(16) << ehoch(x) << " <-> " << exp(x) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbG9uZyBkb3VibGUgZWhvY2gobG9uZyBkb3VibGUgeCl7CiAgICBsb25nIGRvdWJsZSBlcmcgPSAtMTsKICAgIGxvbmcgbG9uZyBjb3VudGVyID0gMDsKICAgIGxvbmcgZG91YmxlIGVwc2lsb24gPSAxZS0xNjsKICAgIGxvbmcgZG91YmxlIG5leHQgPSAxOwogICAgY291bnRlcisrOwogICAgd2hpbGUoZXBzaWxvbiA8IGFicyhuZXh0KSAmJiBjb3VudGVyIDwgMTAwKXsKICAgICAgICBlcmcgKz0gbmV4dDsKICAgICAgICBuZXh0ICo9IHggLyBjb3VudGVyOwogICAgICAgIGNvdW50ZXIrKzsKICAgIH0KICAgIHJldHVybiBlcmcgKyAxOwp9CgppbnQgbWFpbigpIHsKICAgIGZvciAoZG91YmxlIHggPSAwOyB4IDwgMTA7IHgrKykKCSAgY291dCA8PCB4IDw8ICI6ICIgPDwgc2V0cHJlY2lzaW9uKDE2KSA8PCBlaG9jaCh4KSA8PCAiIDwtPiAiIDw8IGV4cCh4KSA8PCBlbmRsOwoKCXJldHVybiAwOwp9