gpt4 book ai didi

java - 数字总和问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:01:13 25 4
gpt4 key购买 nike

我正在解决 Project Euler 的一些问题,我偶然发现了一个问题。我不知道为什么这个算法不适用于 2^1000。它适用于 10^1 和 10^8 范围内的数字(这些是我测试过的),但它应该适用于所有可能的范围。

顺便说一句,2^1000 是 1.07*10^301。 double 的上限大约为 10^308,因此该数字仍在范围内。

import java.lang.Math;

public class Euler15 {
public static void main(String[] args) {


int count = 0;
double res = Math.pow(2,1000);

for(int i = 301; i >= 0; i--){
if (res == 0){
break;
}
while (res >= Math.pow(10, i)){
res-= Math.pow(10, i);
System.out.println(res);
count++;
}
}

System.out.println(count);
}
}

最佳答案

2^1000 对于普通数据类型来说太大了。使用 BigInteger 或字符串。

import java.math.BigInteger;

将输入作为 BigInteger:

BigInteger n = BigInteger.valueOf(2);

现在给它加电到 1000:

n = n.pow(1000);

现在,使用 toString() 将其转换为字符串,然后将每个字符添加到结果中,将其更改为 int。应该这样做。

关于java - 数字总和问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20168285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com