7-38 数列求和-加强版(20 分)
给定某数字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 这题刚刚接触感觉并不是很好理解,先手动模仿一个看看 假设A=9 ,N=5 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 关键是可以把它们看成一列一列加,如果有进位则进位 其次因为题目要求100000个数字,这个肯定是需要用数组来存储了,下面来看一下代码
1 #include2 #include 3 #include 4 #include 5 /* 6 给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。 7 例如A=1, N=3时,S=1+11+111=123。 8 输入数字A与非负整数N。 9 输出格式10 11 */12 13 int main()14 {15 int p[100002] = { 0};16 int a,n;17 int i,j;18 int t,fd=0; //中间转换变量 ,之前进位的数19 20 scanf("%d %d",&a,&n);21 if ( n==0 ){22 printf("0\n");23 return 0;24 }25 j = 0;26 for( i=n; i>0; i--,j++){27 t = i*a + fd;28 fd = t/10;29 p[j] = t%10;30 }31 if( fd!=0 ){32 printf("%d",fd);33 }34 for( i=j-1; i>=0; i--){35 printf("%d",p[i]);36 }37 return 0;38 }