1+...N!的问题(为什么只能加到95!)
#include"iostream.h"void main()
{ int a[2][200];
int n,p=1;
cout<<"input n:";
cin>>n;
for(int i=1;i<=n;i++)
{ int digit=1,digit2,temp,j,carry=0,m;
a[1][1]=1;
for(j=1;j<=i;j++) //计算i的阶乘开始
{ for(int k=1;k<=digit;k++)
{temp=a[1][k]*j+carry;
a[1][k]=temp%10;
carry=temp/10;
}
while(carry)
{a[1][++digit]=carry%10;
carry/=10;
}
} //计算i的阶乘结束
/* cout<<i<<"!=";
for(int t=digit;t>=1;t--)
cout<<a[i][t]; //验证i的阶乘
cout<<endl; */
if(i==1){for(int q=1;q<=digit;q++) //加和开始
a[0][q]=a[1][q];
digit2=digit;
}
else{
for(p=1,carry=0;p<=digit||p<=digit2;p++)
{if(p>digit)a[1][p]=0;
if(p>digit2)a[0][p]=0;
temp=a[0][p]+a[1][p]+carry;
a[0][p]=temp%10;
carry=temp/10;
}
while(carry){a[0][p]=1;
p++;}
digit2=--p;
} //加和结束
cout<<"1!+...+"<<i<<"!=";
for(int w=p;w>=1;w--)
cout<<a[0][w];
cout<<endl; //验证每一步的阶乘和
}
//cout<<"p="<<p<<endl; //输出结果的位数
cout<<"sum=";
for(;p>=1;p--)
cout<<a[0][p];
cout<<endl;
}
上面的程序是我利用数组编的加和程序,但是不知怎么搞的只能加到95!,加到了96!就会没反映了?请大家帮忙看一下.