fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <float.h>
  6.  
  7. const long PRECISION = 5000;
  8. const int CALC_PREC = 7;
  9. const int CALC_ALPHA = 10;
  10.  
  11. static long base;
  12. static long last;
  13.  
  14. void add(long z[], long x[], long y[])
  15. {
  16. long i, t, r = 0;
  17. for (i = last; i >= 0; --i) {
  18. t = x[i] + y[i] + r;
  19. r = t / base;
  20. z[i] = t - r * base;
  21. }
  22. }
  23.  
  24. void sub(long z[], long x[], long y[])
  25. {
  26. long i, t, r = 1;
  27. for (i = last; i >= 0; --i) {
  28. t = x[i] + (base - y[i] - 1) + r;
  29. r = t / base;
  30. z[i] = t - r * base;
  31. }
  32. }
  33.  
  34. void mul(long z[], long x[], long k)
  35. {
  36. long i, t, r = 0;
  37. for (i = last; i >= 0; --i) {
  38. t = x[i] * k + r;
  39. r = t / base;
  40. z[i] = t - r * base;
  41. }
  42. }
  43.  
  44. void dvd(long z[], long x[], long k)
  45. {
  46. long i, r = 0;
  47. double t;
  48. for (i = 0; i <= last; ++i) {
  49. t = x[i] + (double)r * base;
  50. z[i] = t / k;
  51. r = t - (double)k * z[i];
  52. }
  53. }
  54.  
  55. void print(long x[]) {
  56. int i, j, c1, c2;
  57. int d;
  58. long t;
  59. c1 = c2 = 0;
  60. for (i = 0; i < ceil((double)PRECISION / CALC_PREC) + 1; i++) {
  61. t = x[i];
  62. for (j = CALC_PREC - 1; j >= 0; --j) {
  63. d = t / (long)pow(10, j);
  64. t = t - d * (long)pow(10, j);
  65. putchar('0' + d);
  66. if (++c1 >= 10) {
  67. putchar(' ');
  68. c1 = 0;
  69. if (++c2 >= 5) {
  70. putchar('\n');
  71. c2 = 0;
  72. }
  73. }
  74. }
  75. }
  76. }
  77.  
  78. int iszero(long x[]) {
  79. int i;
  80. int flag = 1;
  81. for (i = 0; i <= last; i++)
  82. if (x[i] != 0) {
  83. flag = 0;
  84. break;
  85. }
  86. return flag;
  87. }
  88.  
  89. int main()
  90. {
  91. long n;
  92. long *s, *t;
  93.  
  94. base = pow(10, CALC_PREC);
  95. last = ceil((double)PRECISION / CALC_PREC) + CALC_ALPHA;
  96.  
  97. s = malloc((last + 1) * sizeof(long));
  98. t = malloc((last + 1) * sizeof(long));
  99. memset(s, 0, (last + 1) * sizeof(long));
  100. memset(t, 0, (last + 1) * sizeof(long));
  101. t[0] = base / 2;
  102. n = 2;
  103. while (!iszero(t)) {
  104. add(s, s, t);
  105. n++;
  106. dvd(t, t, n);
  107. }
  108. printf("e = 2.\n");
  109. print(s);
  110.  
  111. free(s);
  112. free(t);
  113. return 0;
  114. }
  115. /* end */
Success #stdin #stdout 0.1s 1808KB
stdin
Standard input is empty
stdout
e = 2.
7182818284 5904523536 0287471352 6624977572 4709369995 
9574966967 6277240766 3035354759 4571382178 5251664274 
2746639193 2003059921 8174135966 2904357290 0334295260 
5956307381 3232862794 3490763233 8298807531 9525101901 
1573834187 9307021540 8914993488 4167509244 7614606680 
8226480016 8477411853 7423454424 3710753907 7744992069 
5517027618 3860626133 1384583000 7520449338 2656029760 
6737113200 7093287091 2744374704 7230696977 2093101416 
9283681902 5515108657 4637721112 5238978442 5056953696 
7707854499 6996794686 4454905987 9316368892 3009879312 
7736178215 4249992295 7635148220 8269895193 6680331825 
2886939849 6465105820 9392398294 8879332036 2509443117 
3012381970 6841614039 7019837679 3206832823 7646480429 
5311802328 7825098194 5581530175 6717361332 0698112509 
9618188159 3041690351 5988885193 4580727386 6738589422 
8792284998 9208680582 5749279610 4841984443 6346324496 
8487560233 6248270419 7862320900 2160990235 3043699418 
4914631409 3431738143 6405462531 5209618369 0888707016 
7683964243 7814059271 4563549061 3031072085 1038375051 
0115747704 1718986106 8739696552 1267154688 9570350354 
0212340784 9819334321 0681701210 0562788023 5193033224 
7450158539 0473041995 7777093503 6604169973 2972508868 
7696640355 5707162268 4471625607 9882651787 1341951246 
6520103059 2123667719 4325278675 3985589448 9697096409 
7545918569 5638023637 0162112047 7427228364 8961342251 
6445078182 4423529486 3637214174 0238893441 2479635743 
7026375529 4448337998 0161254922 7850925778 2562092622 
6483262779 3338656648 1627725164 0191059004 9164499828 
9315056604 7258027786 3186415519 5653244258 6982946959 
3080191529 8721172556 3475463964 4791014590 4090586298 
4967912874 0687050489 5858671747 9854667757 5732056812 
8845920541 3340539220 0011378630 0945560688 1667400169 
8420558040 3363795376 4520304024 3225661352 7836951177 
8838638744 3966253224 9850654995 8862342818 9970773327 
6171783928 0349465014 3455889707 1942586398 7727547109 
6295374152 1115136835 0627526023 2648472870 3920764310 
0595841166 1205452970 3023647254 9296669381 1513732275 
3645098889 0313602057 2481765851 1806303644 2812314965 
5070475102 5446501172 7211555194 8668508003 6853228183 
1521960037 3562527944 9515828418 8294787610 8526398139 
5599006737 6482922443 7528718462 4578036192 9819713991 
4756448826 2603903381 4418232625 1509748279 8777996437 
3089970388 8677822713 8360577297 8824125611 9071766394 
6507063304 5279546618 5509666618 5664709711 3444740160 
7046262156 8071748187 7844371436 9882185596 7095910259 
6862002353 7185887485 6965220005 0311734392 0732113908 
0329363447 9727355955 2773490717 8379342163 7012050054 
5132638354 4000186323 9914907054 7977805669 7853358048 
9669062951 1943247309 9587655236 8128590413 8324116072 
2602998330 5353708761 3893963917 7957454016 1372236187 
8936526053 8155841587 1869255386 0616477983 4025435128 
4396129460 3529133259 4279490433 7299085731 5802909586 
3138268329 1477116396 3370924003 1689458636 0606458459 
2512699465 5724839186 5642097526 8508230754 4254599376 
9170419777 8008536273 0941710163 4349076964 2372229435 
2366125572 5088147792 2315197477 8060569672 5380171807 
7636034624 5927877846 5850656050 7808442115 2969752189 
0874019660 9066518035 1650179250 4619501366 5854366327 
1254963990 8549144200 0145747608 1930221206 6024330096 
4127048943 9039717719 5180699086 9986066365 8323227870 
9376502260 1492910115 1717763594 4602023249 3002804018 
6772391028 8097866605 6511832600 4368850881 7157238669 
8422422010 2495055188 1694803221 0025154264 9463981287 
3677658927 6881635983 1247788652 0141174110 9136011649 
9507662907 7943646005 8519419985 6016264790 7615321038 
7275571269 9251827568 7989302761 7611461625 4935649590 
3798045838 1823233686 1201624373 6569846703 7858533052 
7583333793 9907521660 6923805336 9887956513 7285593883 
4998947074 1618155012 5397064648 1719467083 4819721448 
8898790676 5037959036 6967249499 2545279033 7296361626 
5897603949 8576741397 3594410237 4432970935 5477982629 
6145914429 3645142861 7158587339 7467918975 7121195618 
7385783644 7584484235 5558105002 5611492391 5188930994 
6342841393 6080383091 6628188115 0371528496 7059741625 
6282360921 6807515017 7725387402 5642534708 7908913729 
1722828611 5159156837 2524163077 2254406337 8759310598 
2676094420 3261924285 3170187817 7296023541 3060672136 
0460003896 6109364709 5141417185 7770141806 0644363681 
5464440053 3160877831 4317444081 1949422975 5993140118 
8868331483 2802706553 8330046932 9011574414 7563139997 
2217038046 1709289457 9096271662 2607407187 4997535921 
2756084414 7378233032 7033016823 7193648002 1732857349 
3594756433 4129943024 8502357322 1459784328 2641421684 
8787216733 6701061509 4243456984 4018733128 1010794512 
7223737886 1260581656 6805371439 6127888732 5273738903 
9289050686 5324138062 7960259303 8772769778 3792868409 
3253658807 3398845721 8746021005 3114833513 2385004782 
7169376218 0049047955 9795929059 1655470505 7775143081 
7511269898 5188408718 5640260353 0558373783 2422924185 
6256442550 2267215598 0274012617 9719280471 3960068916 
3828665277 0097527670 6977703643 9260224372 8418408832 
5184877047 2638440379 5301669054 6593746161 9323840363 
8931313643 2713768884 1026811219 8912752230 5625675625 
4701725086 3497653672 8860596675 2740868627 4079128565 
7699631378 9753034660 6166698042 1826772456 0530660773 
8996242183 4085988207 1864682623 2150802882 8635974683 
9654358856 6855037731 3129658797 5810501214 9162076567 
6995065971 5344763470 3208532156 0367482860 8378656803 
0730626576 3346977429 5634643716 7093971930 6087696349 
5328846833 6130388294 3104080029 6873869117 0666661468 
0001512114 34