|
沙发
楼主 |
发表于 2014-11-1 14:59:24
|
只看该作者
那么改进的就是这样
- #include <iostream>
- using namespace std;
- int a[200],s[200]; //a表示单个的阶乘,s表示总和。
- int i,j,k;
- int l;
- int x;
- int main()
- {
- a[0]=1;
- l=0; //乘法默认的初值是1
- for (k=1; k<=10; k++) //做 100次连乘
- {
- for (i=0; i<=l; i++) a[i]=a[i]*k; //每位数字都乘法
- for (i=0; i<=l-1; i++) //进位 标程
- {
- x=a[i];
- a[i]=x%10;
- a[i+1]=a[i+1]+x/10;
- }
- while (a[l]>=10) //因为不止一次进位,所以不用if用while
- {
- x=a[l];
- a[l]=x%10;
- a[l+1]=a[l+1]+x/10;
- l++;
- }
- for (i=0;i<=l;i++) s[i]=s[i]+a[i];
- for (i=0; i<=l-1; i++) //进位 标程
- {
- x=s[i];
- s[i]=x%10;
- s[i+1]=s[i+1]+x/10;
- }
- while (s[l]>=10) //这里其实可以用if 因为加法只会进最多一次
- {
- x=s[l];
- s[l]=x%10;
- s[l+1]=s[l+1]+x/10;
- l++;
- }
- }
- for (i=l; i>=0; i--) cout<<s[i];
- return 0;
- }
复制代码 |
|