gpt4 book ai didi

c# - 2^1000 的各位数字和是多少?

转载 作者:可可西里 更新时间:2023-11-01 08:36:29 25 4
gpt4 key购买 nike

这是一个 problem来自 Project Euler ,并且这个问题包含一些源代码,因此如果您有兴趣自己解决它,请考虑这是您的剧透警报。不鼓励分发问题的解决方案,这不是我想要的。我只需要在正确的方向上真诚地插入和指导。

题目内容如下:

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

What is the sum of the digits of the number 2^1000?

我理解问题的前提和数学,但我一周前才开始练习 C#,所以我的编程充其量是不稳定的。

我知道 int、long 和 double 无法精确保存 2^1000 的 300 多位(以 10 为底)数字,因此需要一些策略。我的策略是设置一个计算,一个一个地获取数字,并希望编译器能够弄清楚如何计算每个数字而不会出现溢出之类的错误:

using System;
using System.IO;
using System.Windows.Forms;

namespace euler016
{
class DigitSum
{
// sum all the (base 10) digits of 2^powerOfTwo
[STAThread]
static void Main(string[] args)
{
int powerOfTwo = 1000;
int sum = 0;

// iterate through each (base 10) digit of 2^powerOfTwo, from right to left
for (int digit = 0; Math.Pow(10, digit) < Math.Pow(2, powerOfTwo); digit++)
{
// add next rightmost digit to sum
sum += (int)((Math.Pow(2, powerOfTwo) / Math.Pow(10, digit) % 10));
}
// write output to console, and save solution to clipboard
Console.Write("Power of two: {0} Sum of digits: {1}\n", powerOfTwo, sum);
Clipboard.SetText(sum.ToString());
Console.WriteLine("Answer copied to clipboard. Press any key to exit.");
Console.ReadKey();
}
}
}

它似乎对 powerOfTwo < 34 非常有效。我的计算器用完了高于该值的有效数字,所以我无法测试更高的幂。但是跟踪程序,似乎没有发生溢出:计算的位数随着 powerOfTwo = 1000 的增加而逐渐增加,并且位数之和也(平均)随着 powerOfTwo 的增加而增加。

对于我应该执行的实际计算,我得到了输出:

Power of two: 1000 Sum of digits: 1189

但是 1189 不是正确答案。我的程序有什么问题?我愿意接受任何和所有建设性的批评。

最佳答案

要计算如此大的数字的值,您不仅需要成为一名优秀的程序员,而且还需要成为一名优秀的数学家。这里给你一个提示,有一个熟悉的公式 ax = ex ln a ,或者如果您愿意,ax = 10x log a.

更具体地解决您的问题21000 求2的公共(public)(以10为底)对数,乘以1000;这是 10 的幂。如果你得到类似 1053.142 (53.142 = log 2 value * 1000) 的结果 - 你很可能会 - 那么那就是 1053 x 100.142;只需评估 100.142,您将得到 1 到 10 之间的数字;并将其乘以 1053,但是这个 1053 不会有用,因为 53 零和只会是零。

C#中的对数计算

Math.Log(num, base);

为了更准确,您可以使用 Big Integer 的 Log 和 Pow 函数。

现在休息编程帮助我相信你可以从你身边得到。

关于c# - 2^1000 的各位数字和是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310133/

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