Bruteforce Algorithm to Compute the Maxmium Powerful Digit Sum u

  • 时间:2020-09-09 13:16:32
  • 分类:网络文摘
  • 阅读:77 次

A googol (10100) is a massive number: one followed by one-hundred zeros; 100100 is almost unimaginably large: one followed by two-hundred zeros. Despite their size, the sum of the digits in each number is only 1.

Considering natural numbers of the form, ab, where a, b < 100, what is the maximum digital sum?

Maxmium Powerful Digit Sum using Java’s BigInteger

Given a and b are in short range of [0 to 99]. There bruteforce algorithm should be more than enough to solve the problem. We need to check total 100*100 different combinations of a to the power b.

In order to hold such large number, we can use array, or in Java, we can simply use the java.math.BigInteger. See below Java’s trivial implementation using the BigInteger. The result (BigInteger) is converted to String type, then the digits are sum, then updating the maximum.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.helloacm;
 
import lombok.var;
import java.math.BigInteger;
 
public class Main {
    public static void main(String[] args) {
        int ans = 0;
        for (var a = 2; a < 100; ++ a) {
            for (var b = 2; b < 100; ++ b) {
                var c = BigInteger.valueOf(a).pow(b);
                var v = c.toString();
                var sum = 0;
                for (var x: v.toCharArray()) {
                    sum += x - 48;
                    ans = Math.max(sum, ans);
                }
            }
        }
        System.out.println(ans);
    }
}
package com.helloacm;

import lombok.var;
import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        int ans = 0;
        for (var a = 2; a < 100; ++ a) {
            for (var b = 2; b < 100; ++ b) {
                var c = BigInteger.valueOf(a).pow(b);
                var v = c.toString();
                var sum = 0;
                for (var x: v.toCharArray()) {
                    sum += x - 48;
                    ans = Math.max(sum, ans);
                }
            }
        }
        System.out.println(ans);
    }
}

The answer is 972.

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
采蘑菇数学题  小红可能在什么时间去摘西红柿  称螺丝的数学题  一乘二分之一加二乘三分之一加…九十九乘一百分之一加一百乘一百零一分之一等于多少?求答题过程和答案。  为什么所有剩下的钱加起来是51元?  十二个乒乓球特征相同,其中只有一个重量异常  某银行有两种储蓄计划——单利和复利的问题  大院里养了三种动物。每只小山羊戴3个铃铛,每只狗戴1个铃铛  某本书正文所标注的页码共用了2989个阿拉伯数字,问这本书的正文一共有多少页?  有两棵古槐树,500年前有个学者说 
评论列表
添加评论