目录
一. 题目
二. 常规方法代码
三. 递归
一. 题目
题目描述
求 1!+2!+3!+···+N!
内存限制:512 MiB时间限制:1000 ms
输入格式
正整数N(N<=20)
输出格式
1!+2!+3!+···+N!的和。
样例
样例输入
3
样例输出
9
题目描述
求 1!+2!+3!+···+N!
内存限制:512 MiB时间限制:1000 ms
输入格式
正整数N(N<=20)
输出格式
1!+2!+3!+···+N!的和。
样例
样例输入
3样例输出
9 这道题其实并不难,我们可有许多方法来解决。 相信不会有勇士想用暴力枚举 因为int容易溢出,所以我们用long long。
此题可不用高精度。
P.S. n!=1*2*3*···*n
二. 常规方法代码
#include //万能头文件
using namespace std;
int main() {
long long n, ans = 0, ans1 = 1;
cin >> n;
for (long long i = 1; i <= n; i++) {
for (long long j = 1; j <= i; j++) {
ans1 *= j; //阶乘
}
ans += ans1; //结果的值加在计数变量中
ans1 = 1;
}
printf("%lldn", ans);
return 0;
}
或者
#include//万能头文件 using namespace std; long long f(long long n) { long long ans=1; for(int i=1;i<=n;i++){ ans*=i; //用函数计算阶乘 } return ans; } int main() { long long n, x = 0; cin >> n; for (int i = 1; i <= n; i++) { x += f(i); } printf("%lldn", x); return 0; }
三. 递归
#include //万能头文件
using namespace std;
long long f(long long n) {
if (n == 1) {
return 1;
}
return n * f(n - 1);
}
int main() {
long long n, x = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
x += f(i);
}
printf("%lldn", x);
return 0; //养成好习惯
}
现在我们来验证一下。
正确。
*听说点赞的人做题都AC
(蒟蒻写题解,献丑了)



