阶乘之和
例题:
输入n,计算S = 1!+2!+3!+...+n!的未6位(不含前导0)。n<=10^6,n!表示前n个正整数之积。
样例输入:
10
样例输出:
37913
分析:
这个任务看似不难,实际却有陷阱。先看如下代码:
代码1(有缺陷):
//abc
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned long int n,S = 0;
scanf("%ld",&n);
for(int i=1;i<=n;i++)
{
int long factorial = 1;
for(int j=1;j <=i;j++)
factorial *= j;
S += factorial;
}
printf("%ld\n",S % 1000000);
return 0;
}
#include<stdio.h>
#include<time.h>
int main()
{
const int MOD = 1000000;
int n,S = 0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int factorial = 1
计算阶乘之和的C语言实现与溢出问题

该博客讨论了如何计算阶乘之和的问题,特别是在输入值n不超过10^6时,如何处理数据溢出并求得结果的后六位(不含前导0)。博主通过一个有缺陷的代码示例引入话题,分析了在计算阶乘过程中可能遇到的挑战,并可能涉及优化计算时间和避免整数溢出的策略。
最低0.47元/天 解锁文章
9632

被折叠的 条评论
为什么被折叠?



