首页 > 试题广场 >

数字阶梯求和

[编程题]数字阶梯求和
  • 热度指数:11801 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定a和n,计算a+aa+aaa+a...a(n个a)的和。

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


输出描述:
对于每组输入,请输出结果。
示例1

输入

1 10

输出

1234567900
Java
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String a = scanner.next();
            int n = scanner.nextInt();
            String s = a;
            BigInteger sum = BigInteger.ZERO;
            for (int i = 1; i <= n; i++) {
                sum=sum.add(new BigInteger(s));
                s+=a;
            }
            System.out.println(sum.toString());
        }
    }
}


编辑于 2020-03-20 09:03:18 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int a = sc.nextInt();
            int n = sc.nextInt();
            StringBuilder sb = new StringBuilder();
            //使用re接收余数
            int re;
            //使用lt接收进位
            int lt=0;
            for(int i=0;i<n;i++){
                re=((n-i)*a+lt)%10;
                lt=((n-i)*a+lt)/10;
                sb.append(re);
            }
            //将所得数倒置即为所求
            System.out.print(sb.reverse());
        }
    }
}
因为数据大到能达到100位数,使用字符拼接较为理想,性能较快,而且几乎不用考虑范围,从个位开始拼接,
发表于 2018-08-03 03:35:10 回复(0)

运行时间:49ms
占用内存:11956k
从Long转到BigInteger的路过
再来看看大家的讨论,用Java通过的基本都用了该类~
使用BigInteger和StringBuilder,代码很好理解

import java.math.BigInteger;
import java.util.Scanner;

/**
 * @author Allen_Hua
 * @create_time 创建时间:May 12, 2018 8:31:26 PM 类说明
 */
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int a = scan.nextInt();
            int n = scan.nextInt();
            BigInteger sum = new BigInteger("0");
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < n; i++) {
                sb.append(a);
                BigInteger temp = new BigInteger(sb.toString());
                sum = sum.add(temp);
            }
            System.out.println(sum);
        }
    }
}
发表于 2018-05-12 20:57:09 回复(0)

问题信息

难度:
3条回答 9899浏览

热门推荐

通过挑战的用户

查看代码
数字阶梯求和