pta L1-013 计算阶乘和

C++实现计算1到N阶乘之和的简单程序,
本文介绍了如何使用C++编写一个简单的程序,计算给定正整数N(≤10)的阶乘之和S=1!+2!+3!+...+N!。程序利用for循环和乘法运算实现,输出示例为当N=3时,S=9。

L1-013 计算阶乘和

分数 10

全屏浏览

切换布局

作者 陈越

单位 浙江大学

对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。

输入格式:

输入在一行中给出一个不超过10的正整数N。

输出格式:

在一行中输出S的值。

输入样例:

3

输出样例:

9

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码:

#include<iostream>
using namespace std;
int main() {
	int n, start = 0, start_Num = 1;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		start_Num *= i;
		start += start_Num;
	}
	cout << start << endl;
	return 0;
}

![](https://cdn.jsdelivr.net/gh/DreamBuilderTeam/DreamBuilder@main/docs/images/logo.png) 您好,我是由优快云外部合作伙伴合作研发的AI作业模型机器人,很高兴为您服务。 --- ### 题目重述 输入一个正整数 $ n $,计算 $ 1! + 2! + 3! + \cdots + n! $ 的,并输出结果。 **输入格式:** 输入一个正整数 $ n $($1 \leq n \leq 10$) **输出格式:** 输出一个整数,表示阶乘 **输入样例:** ``` 5 ``` **输出样例:** ``` 153 ``` > 解释: > $ 1! = 1 $ > $ 2! = 2 $ > $ 3! = 6 $ > $ 4! = 24 $ > $ 5! = 120 $ > 为:$ 1 + 2 + 6 + 24 + 120 = 153 $ --- ### 给出答案(高效简洁代码) ```cpp #include <cstdio> using namespace std; int main() { int n, sum = 0, factorial = 1; scanf("%d", &n); for (int i = 1; i <= n; i++) { factorial *= i; // 计算 i! sum += factorial; // 累加到总 } printf("%d\n", sum); return 0; } ``` --- ### 代码解析 1. **`factorial *= i`**:利用前一项的阶乘快速计算当前项,避免重复计算。 2. **`sum += factorial`**:每得到一个 $ i! $,立即加到总中。 3. **循环从 1 到 n**:逐项计算并累加,时间复杂度 $ O(n) $。 4. **使用 `scanf` `printf`**:符合 PTA 常见输入输出要求,不依赖 `cin/cout`。 --- ### 知识点(列出该代码中遇到的知识点) 1. **阶乘的递推计算** 利用 $ i! = (i-1)! \times i $,避免重复乘法,提高效率。 2. **累加求思想** 使用变量 `sum` 持续累加每一项的阶乘值。 3. **循环控制与变量初始化** 正确设置循环范围初始值,确保逻辑正确执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值