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\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 }

 










免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM