7-38 数列求和-加强版(20 分)

7-38 数列求和-加强版(20 分)

给定某数字A(1A9)以及非负整数N(0N100000),求数列之和S=A+AA+AAA++AAA(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 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 #include <string.h>
 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
");
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 }








在这个国度中,必须不停地奔跑,才能使你保持在原地。如果想要寻求突破,就要以两倍现在速度奔跑!
原文地址:https://www.cnblogs.com/yuxiaoba/p/8313501.html