gpt4 book ai didi

javascript - 用 Javascript 解决 Project Euler 16

转载 作者:行者123 更新时间:2023-11-30 10:43:22 25 4
gpt4 key购买 nike

我正在从事 Project Euler,用 JavaScript 编写解决方案。但是,问题 16 似乎无法用 Javascript 解决:

215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.

What is the sum of the digits of the number 21000?

因为 JavaScript 的 64 位精度不足以容纳数字,计算 Math.pow(2, 1000) 得到 1.0715086071862673e+301。显然,我不能用这个值来解决问题,因为它不包含 21000 的所有数字。

还有其他方法可以解决这个问题吗?请注意,我不是询问how to get around the precision issue ;但是,如果这是唯一的解决方案,那就这样吧。

理想情况下,我想找到该问题的替代解决方案(也许是 super 数学方法?)。

(作为旁注,我并不是想欺骗和放弃 SO 的答案。我已经解决了它,但我不得不使用 Python)

最佳答案

可以通过将 2^1000 存储在数组(数字)中的天真方法来解决此问题。运行不到一秒钟。原创想法来自here .

var number = [1],
sum = 0;

for(var i = 0; i < 1000; i++)
{
var overflow = 0,
count = number.length + 1

for(var j = 0; j < count; j++)
{
var digit = number[j] || 0;

digit = 2 * digit + overflow;

if(digit > 9)
{
digit -= 10;
overflow = 1;
}
else
{
overflow = 0;
}

number[j] = digit;
}
}

for(var i = 0; i < 1000; i++)
{
sum += number[i];
}

console.log(sum);

关于javascript - 用 Javascript 解决 Project Euler 16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834037/

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