九度oj 题目1051:数字阶梯求和

题目描述:

给定a和n,计算a+aa+aaa+a...a(n个a)的和。

输入:

测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。

输出:

对于每组输入,请输出结果。

样例输入:
1 10
样例输出:
1234567900

这道题的难点在于处理很长很长的数的求和
 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <string>
 5 #include <cmath>
 6 #define MAX 302
 7 
 8 int sum[MAX];
 9 int temp[MAX];
10 
11 void calSum() {
12     int ci = 0;
13    for(int i = 0; i < MAX;i++) {
14         int ben = (sum[i] + temp[i] + ci) % 10;
15         ci = (sum[i] + temp[i] + ci)/10;
16         sum[i] = ben;
17    } 
18 }
19 int main(int argc, char const *argv[])
20 {
21     int a, n;
22     while(scanf("%d %d",&a,&n) != EOF) {
23         for(int i = 0; i < MAX; i++) {
24             sum[i] = 0;
25         }
26         for(int i = 1; i <= n; i++) {
27             for(int j = 0; j < MAX; j++) {
28                 temp[j] = 0;
29             }
30             for(int j = 0; j < i; j++) {
31                 temp[j] = a;
32             }
33             calSum();
34         }
35         bool isBegin = false;
36         for(int i = MAX; i >= 0; i--) {
37             if(isBegin == false && sum[i] != 0) {
38                 isBegin = true;
39                 printf("%d",sum[i]);
40             }
41             else if(isBegin) {
42                 printf("%d",sum[i]);
43             }
44         }
45         printf("
");
46     }
47     return 0;
48 }


原文地址:https://www.cnblogs.com/jasonJie/p/5692584.html