#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 = 0.0000000001;
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(11) << ehoch(x) << " <-> " << exp(x) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbG9uZyBkb3VibGUgZWhvY2gobG9uZyBkb3VibGUgeCl7CiAgICBsb25nIGRvdWJsZSBlcmcgPSAtMTsKICAgIGxvbmcgbG9uZyBjb3VudGVyID0gMDsKICAgIGxvbmcgZG91YmxlIGVwc2lsb24gPSAwLjAwMDAwMDAwMDE7CiAgICBsb25nIGRvdWJsZSBuZXh0ID0gMTsKICAgIGNvdW50ZXIrKzsKICAgIHdoaWxlKGVwc2lsb24gPCBhYnMobmV4dCkgJiYgY291bnRlciA8IDEwMCl7CiAgICAgICAgZXJnICs9IG5leHQ7CiAgICAgICAgbmV4dCAqPSB4IC8gY291bnRlcjsKICAgICAgICBjb3VudGVyKys7CiAgICB9CiAgICByZXR1cm4gZXJnICsgMTsKfQoKaW50IG1haW4oKSB7CiAgICBmb3IgKGRvdWJsZSB4ID0gMDsgeCA8IDEwOyB4KyspCgkgIGNvdXQgPDwgeCA8PCAiOiAiIDw8IHNldHByZWNpc2lvbigxMSkgPDwgZWhvY2goeCkgPDwgIiA8LT4gIiA8PCBleHAoeCkgPDwgZW5kbDsKCglyZXR1cm4gMDsKfQ==