unsigned long long 数据类型来存储较大的整数,并使用循环方式计算阶乘。通过这种方式,可以避免栈溢出的问题,并且能够正常处理较大的数值。
#include <bits/stdc++.h>
using namespace std;
unsigned long long factorial(int n)
{
unsigned long long result = 1;
for (int i = 1; i <= n; i++)
result *= i;
return result;
}
int main()
{
int n;
scanf("%d", &n);
unsigned long long sum = 0;
for (int i = 1; i <= n; i++)
sum += factorial(i);
printf("%llu\n", sum);
return 0;
}