栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言:实现高精度的阶乘累加求和

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言:实现高精度的阶乘累加求和

题目要求:输入一个正整数n(n<=100),输出1!+2!+3!+......+n!的值。

编程实现:

# include 
# define N 10000 
 
int main() {
    int n, d = 1, t = 1;                   //n:前n项;d当前项阶乘位数;t当前阶乘累加和位数 
	int A[N] = {1}, Sum[N] = {1};          //初始化数组A和Sum首元素为1 
    scanf("%d", &n);
    for(int i = 2; i <= n; i++){           //循环计算1~n阶乘累加和          
    	for(int j = 0; j < d; j++){         
    		A[j] *= i;
		}
		for(int j = 0; j < d; j++){        //数组元素都更新为一位 (满10进1) 
			if(A[j] >= 10){
    			A[j+1] += A[j]/10;
    			A[j] %= 10;
    			if(j == d-1){              //更新数组A中元素个数(数的位数) 
    				d++;
				}
			}
		}
		for(int j = 0; j < d; j++){        //计算数组Sum的元素(有可能大于10) 
			Sum[j] += A[j];
		}
		for (int j = 0; j < t; j++)        //数组元素都更新为一位 (满10进1)
        {  
            if (Sum[j] >= 10) 
            {
            	Sum[j+1] += Sum[j]/10;    
            	Sum[j] %= 10;
                if (j == t - 1)            //更新数组Sum中元素个数(数的位数)
                    t++;
            }
        }
        t = t>d ? t:d;                     //数组Sum的位数为t和d的较大值 
	}
    for (int i = t - 1; i >= 0; i--)       //输出数组Sum的元素(高位到低位) 
    {
        printf("%d", Sum[i]);
    }
    return 0;
}

测试结果:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982728.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号