算法总结:大数相加
我们在计算的过程中难免会遇到很大的数,而一个变量又无法将其存储,所以需要我们利用线性表来进行计算。
我们可以通过一道例题
1!+2!+3!+4!+…50!
int n,a[1000]={
0},b[1000]={
0}; //初始化数组使其便为零
scanf("%d",&n);
a[0]=b[0]=1; //将第一个元素作为1方便后面的乘法运算
for(int i=2;i<=n;i++){
for(int j=0;j<100;j++)
a[j]*=i;
//在a这个数组中计算每个数的阶乘
for(int j=0;j<100;j++)
if(a[j]>9){
a[j+1]+=a[j]/10;
a[j]%=10;
}
此部分为在计算每个部分的阶乘的数的结果
for(int j=0;j<100;j++){
b[j]+=a[j];
if(b[j]>9){
b[j+1]+=b[j]/10;
b[j]%=10;
}
}
此部分为计算每个阶乘结果的和
所以通过数组则可以计算比较大的数字以至于不会在单个变量中数据溢出。