浙大PTA 第2章-4 特殊a串数列求和 (20 分)

该博客解析了一道浙大Python题目,要求计算由正整数a重复n次形成的连续数字之和。通过输入的a和n,程序利用循环计算每个连续数并累加,最后输出求和结果。题解提供了详细的代码实现,使用了for循环和字符串拼接的方法来构造数字串并求和。

全题解析链接

浙大Python题目集 PTA95题全部解析


给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。

输入格式:

输入在一行中给出不超过9的正整数a和n。

输出格式:

在一行中按照“s = 对应的和”的格式输出。

输入样例:

2 3

输出样例:

s = 246

题解: 

a,n=map(int,input().split())
number = 0
sum = 0
for i in range(1,n+1):
    number = 10*number + a
    sum+=number
print(f's = {sum}')

我们来解决这个题目:**特殊a数列求和**。 ### 问题析: 我们需要计算形如 `a + aa + aaa + ... + aa...a`(共 n 项,最后一项是 n 个 a 连接而成的数字)的和。 例如:当 `a = 2`, `n = 3` 时, - 第1项:2 -2项:22 - 第3项:222 总和为:2 + 22 + 222 = 246 关键在于如何生成每一项。观察发现: - 每一项其实是一个由数字 `a` 重复 i 次组成的整数(i 从 1 到 n) - 我们可以用数学方法构造这些数:比如当前项为 `t = t * 10 + a` --- ### 解法思路: 我们可以用一个循环,每次将前一项乘以10再加上 `a`,就得到下一项。 例如: - 初始 `term = 0` - 第1次:`term = 0*10 + 2 = 2` -2次:`term = 2*10 + 2 = 22` - 第3次:`term = 22*10 + 2 = 222` 然后累加即可。 --- ### Python 实现代码如下: ```python # 读取输入 a, n = map(int, input().split()) total_sum = 0 current_term = 0 # 当前的 a, aa, aaa 等 for i in range(n): current_term = current_term * 10 + a total_sum += current_term print(f"s = {total_sum}") ``` --- ### 代码解释: - `input().split()` 读入两个值并- `map(int, ...)` 将其转为整数 - `current_term` 表示当前构造出的“重复a”的数字,每轮更新为 `current_term * 10 + a` - `total_sum` 累加所有项 - 最后按格式输出结果 --- ### 示例运行: 输入: ``` 2 3 ``` 执行过程: - i=0: current_term = 0*10+2 = 2,sum=2 - i=1: current_term = 2*10+2 = 22,sum=24 - i=2: current_term = 22*10+2 = 222,sum=246 输出: ``` s = 246 ``` 完全符合要求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值