#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
long double ehoch(long double x){
long double erg = 0;
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;
}
int main() {
for (double x = 0; x < 10; x++)
cout << x << ": " << setprecision(16) << ehoch(x) << " <-> " << exp(x) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbG9uZyBkb3VibGUgZWhvY2gobG9uZyBkb3VibGUgeCl7CiAgICBsb25nIGRvdWJsZSBlcmcgPSAwOwogICAgbG9uZyBsb25nIGNvdW50ZXIgPSAwOwogICAgbG9uZyBkb3VibGUgZXBzaWxvbiA9IDFlLTE2OwogICAgbG9uZyBkb3VibGUgbmV4dCA9IDE7CiAgICBjb3VudGVyKys7CiAgICB3aGlsZShlcHNpbG9uIDwgYWJzKG5leHQpICYmIGNvdW50ZXIgPCAxMDApewogICAgICAgIGVyZyArPSBuZXh0OwogICAgICAgIG5leHQgKj0geCAvIGNvdW50ZXI7CiAgICAgICAgY291bnRlcisrOwogICAgfQogICAgcmV0dXJuIGVyZzsKfQoKaW50IG1haW4oKSB7CiAgICBmb3IgKGRvdWJsZSB4ID0gMDsgeCA8IDEwOyB4KyspCgkgIGNvdXQgPDwgeCA8PCAiOiAiIDw8IHNldHByZWNpc2lvbigxNikgPDwgZWhvY2goeCkgPDwgIiA8LT4gIiA8PCBleHAoeCkgPDwgZW5kbDsKCglyZXR1cm4gMDsKfQ==