华师一附中OI组

标题: 求e=1+1/1!+1/2!+1/3!****1/100! [打印本页]

作者: admin    时间: 2014-11-4 19:10
标题: 求e=1+1/1!+1/2!+1/3!****1/100!
  1. # include <iostream>
  2. using namespace std;
  3. int a[105],s[105];  //定义了一个105个数字的数组,a[0]表示10^0即个数,a[1]表示10^-1即十分位,同理**,预留1-2位最后四舍五入。
  4. int i,j,k;  //临时变量  i循环位数,k循环除数
  5. int x; //中转变量
  6. int main()
  7. {
  8.     a[0]=1;
  9.     s[0]=1;
  10.     for (k=1; k<=100; k++)
  11.     {
  12.         x=0;
  13.         for (i=0; i<=104; i++)
  14.         {
  15.             x=10*x+a[i];
  16.             a[i]=x/k;
  17.             x=x%k;
  18.         }

  19.         for (i=0; i<=104; i++) s[i]=s[i]+a[i];
  20.         for (i=104; i>0; i--)
  21.         {
  22.             x=s[i];
  23.             s[i]=x%10;
  24.             s[i-1]=s[i-1]+x/10;
  25.         }

  26.     }
  27.     if (s[101]>=5)
  28.     {
  29.         s[100]++;i=100;
  30.         while ((s[i]>9) && (i>0))
  31.         {
  32.             x=s[i];
  33.             s[i]=x%10;
  34.             s[i-1]=s[i-1]+x/10;
  35.             i--;
  36.         }
  37.     }
  38.         cout <<s[0]<<'.';
  39.         for (i=1; i<=100; i++) cout<<s[i];
  40.         return 0;
  41.     }
复制代码






欢迎光临 华师一附中OI组 (http://hsyit.cn/) Powered by Discuz! X3.2