#include <stdio.h>
// 计算阶乘
unsigned long long factorial(int n) {
unsigned long long result = 1;
for (int i = 2; i <= n; i++) {
result = (result * i) % 1000000; // 取模运算,确保结果不超过6位
}
return result;
}
// 计算阶乘之和的末六位
unsigned long long sum_of_factorials(int n) {
unsigned long long sum = 0;
for (int i = 1; i <= n; i++) {
sum = (sum + factorial(i)) % 1000000; // 取模运算,确保结果不超过6位
}
return sum;
}
int main() {
int n;
// 提示用户输入n
printf("请输入一个正整数n: ");
scanf("%d", &n);
// 计算阶乘之和的末六位
unsigned long long result = sum_of_factorials(n);
// 输出结果
printf("1到%d的阶乘之和的末六位是: %06llu\n", n, result);
return 0;
}
代码解释:
-
函数
factorial
:- 计算给定整数
n
的阶乘。 - 使用取模运算
result = (result * i) % 1000000
确保结果不超过6位。
- 计算给定整数
-
函数
sum_of_factorials
:- 计算1到
n
的阶乘之和。 - 使用取模运算
sum = (sum + factorial(i)) % 1000000
确保结果不超过6位。
- 计算1到
-
主函数
main
:- 提示用户输入一个正整数
n
。 - 调用
sum_of_factorials
函数计算阶乘之和的末六位。 - 输出结果,使用
%06llu
格式化输出,确保输出结果始终为6位数。
- 提示用户输入一个正整数