PTA | 基础编程题目集 | 7-38 数列求和-加强版

文章介绍了如何解决一个编程问题,给定数字A和非负整数N,求A重复N次的数列和。提出两种思路,最终采用数组存储并考虑进位的方法来避免超长数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求

给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。

输入格式:

输入数字A与非负整数N。

输出格式:

输出其N项数列之和S的值。

输入样例:

1 3

输出样例:

123

代码长度限制        16 KB

时间限制        200 ms

内存限制        64 MB

思路分析

本题一个难点为超出int范围的数据的存储和运算。在初步尝试了long long 整型数据存储仍然超出范围后,思考以下思路。

思路1:字符串转换

将每次循环计算结果用字符串表示,再将数据格式由string转换为int进行加和,此方法仍然不能避免超长数据的存储,因此舍弃。

思路二:数组存储

用数组存储计算结果而非输入数据,由于个位、十位...的A的个数存在规律,因此从低位开始循环计算求和结果,达到10就往前进一位,参与下一位运算,余数存入数组作为结果。如此计算到最高位,最后如果最高位仍需要进位,则先输出最高位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值