求S=a+aa+aaa+aaaa+aa...a的值

问题描述:求S=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字,由输入a(1 <= a <= 9)表示,相加的元素个数由输入b(b<= 1000)表示。

这个算法的优点在于,不用考虑数据溢出问题,因为,当a和b都比较大的时候,结果可能会非常大,甚至可能溢出,因此这里将计算结果保存为字符串处理。

Java代码如下:

 1 import java.util.*;
 2  class Test {
 3       public static String sum(int a, int b)  {
 4         StringBuilder builder = new StringBuilder();        //存储计算结果
 5         int extra = 0;                                      //存储进位
 6 
 7         while(b>0){
 8           int value = a * b + extra;                        //将该位上所有的进行累加,并加上低位的进位
 9           extra = value / 10;                               //求进位
10           builder.append(value % 10);                       //将最终结果的对应位添加到结果,倒序添加
11           b--;
12         }
13 
14         while (extra > 0) {                                //进位未处理完,接着处理
15           builder.append(extra % 10);
16           extra /= 10;
17         }
18         return builder.reverse().toString();                //将运算结果反转,并返回
19       }
20     }
21  
22 public class Main {
23     public static void main(String[] args) {
24       int a=9,b=3;
25       System.out.print("S="+a+"+...+");
26       for(int i=1;i<=b;i++)
27           System.out.print(a);
28       System.out.println("="+Test.sum(a,b));
29       
30     }
31 
32 }
View Code

输出为:

S=9+...+999=1107

原文地址:https://www.cnblogs.com/guozhenqiang/p/5426184.html