给定某数字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
解题思路:
1.定义数组s[1000001]用来分别存储个、十、百位相加后的数;
2.如果题中所给的N为0时,直接输出0;
3.用for循环计算个、十、百位上的数,其中(b-i)是用来计算该为上有多少个1相加,temp用来计算是否进位(如果最后一次循环temp==1的话,一定要先输出最高位的1);
i=0 时 | s[0]=(1*(3-0)+0)%10=3 | temp=(1*(3-0)+0)/10=0 |
i=1 时 | s[1]=(1*(3-1)+0)%10=2 | temp=(1*(3-1)+0)/10=0 |
i=2 时 | s[2]=(1*(3-2)+0)%10=1 | temp=(1*(3-2)+0)/10=0 |
4.依上表,我们再利用循环倒序输出数组s[1000001]中的数字。
#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
int s[1000001];
int i=0,temp=0;
if(b==0){
printf("0");
}
for(i=0;i<b;i++){
s[i]=(a*(b-i)+temp)%10;
temp=(a*(b-i)+temp)/10;
}
if(temp==1){
printf("1");
}
for(i=b-1;i>=0;i--){
printf("%d",s[i]);
}
return 0;
}