题目要求
给定某数字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就往前进一位,参与下一位运算,余数存入数组作为结果。如此计算到最高位,最后如果最高位仍需要进位,则先输出最高位