题目
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
输入格式:
输入在一行中给出不超过9的正整数a和n。
输出格式:
在一行中按照“s = 对应的和”的格式输出。
输入样例:
2 3
输出样例:
s = 246
公式解析
将所有项分解为 a ∗ 1 0 n a*10^n a∗10n相加的形式:
a + a a + a a a + + ⋯ + a a ⋯ a ⟺ a+aa+aaa++⋯+aa⋯a\iff a+aa+aaa++⋯+aa⋯a⟺
a ∗ 1 0 0 + ( a ∗ 1 0 1 + a ∗ 1 0 0 ) + ( a ∗ 1 0 2 + a ∗ 1 0 1 + a ∗ 1 0 0 ) + ⋯ + ( a ∗ 1 0 n − 1 + a ∗ 1 0 n − 2 + ⋯ + a ∗ 1 0 0 ) ⟺ a*10^0+(a*10^1+a*10^0)+(a*10^2+a*10^1+a*10^0)+⋯+(a*10^{n-1}+a*10^{n-2}+⋯+a*10^0)\iff a∗100+(a∗101+a∗100)+(a∗102+a∗101+a∗100)+⋯+(a∗10n−1+a∗10n−2+⋯+a∗100)⟺
a ∗ 1 0 0 ∗ n + a ∗ 1 0 1 ∗ ( n − 1 ) + a ∗ 1 0 2 ∗ ( n − 2 ) + ⋯ + a ∗ 1 0 n − 1 ∗ 1 ⟺ a*10^0*n+a*10^1*(n-1)+a*10^2*(n-2)+⋯+a*10^{n-1}*1\iff a∗100∗n+a∗101∗(n−1)+a∗102∗(n−2)+⋯+a∗10n−1∗1⟺
∑ i = 0 n = a ∗ 1 0 i ∗ ( n − i ) \displaystyle\sum_{i=0}^n=a*10^i*(n-i) i=0∑n=a∗10i∗(n−i)
参考解答(AC代码)
#include<stdio.h>
#include<math.h>
int main(){
int a,n,sum=0;
scanf("%d %d",&a,&n);
for(int i=0;i<n;i++){
sum+=a*pow(10,i)*(n-i);
}
printf("s = %d",sum);
return 0;
}