(C语言程序题) 求累加和。 输入两个正整数n和a,求累加和 S=a + aa + aaa + …+aa...a(n个a)之和。 Sample Input: 5 3 Sample Output: 37035
时间: 2023-10-24 08:09:25 浏览: 57
C语言课程设计
分析:
题目中的累加和可以表示为:
$S=a + aa + aaa + … + aa...a(n个a)$
$=a(1+11+111+…+111…1(n个1))$
$=a\sum_{i=1}^{n}(10^{n-i}\times\sum_{j=1}^{i}10^{i-j})$
$=a\sum_{i=1}^{n}\sum_{j=1}^{i}10^{n-j}\times10^{i-j}$
$=a\sum_{i=1}^{n}\sum_{j=1}^{i}10^{n-2j+2i-2}$
$=a\sum_{i=1}^{n}\sum_{j=1}^{i}10^{n-2(j-i)+2i-2}$
$=a\sum_{i=1}^{n}\sum_{k=0}^{i-1}10^{n-2k+2i-2}$
其中,$k=j-i$,$k$的取值范围为$[0,i-1]$。
由于计算过程中需要频繁求10的幂次,我们可以先预处理出一个数组$pow10$,其中$pow10[i]$表示$10^i$。
然后就可以按照上述公式进行计算了。
代码:
阅读全文