zoukankan      html  css  js  c++  java
  • 求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

  • 相关阅读:
    LIS
    原根
    数三角形
    组合数问题
    最短路问题
    2020总结
    树状数组
    康托展开
    LCA
    并查集
  • 原文地址:https://www.cnblogs.com/guozhenqiang/p/5426184.html
Copyright © 2011-2022 走看看