gpt4 book ai didi

c# - 总结一个很长的二进制数的数字?

转载 作者:行者123 更新时间:2023-11-30 13:17:06 26 4
gpt4 key购买 nike

friend 问我:

如果 2^10 = 1024 ,我们可以取 1024 并分解和总结它的数字:

1+0+2+4 = 7.

这很简单。

但是当输入是2^30000时(输入实际上是一个长字符串"1000...")——没有.net类型可以保持这个值。

所以必须有一个技巧来求和它的数字(十进制值的数字)......

已编辑:

相关技巧(用于查找 10^20 - 16)

100 = 10^2 (one and two zeros)

10^20 = (one and 20 zeros)

hence:

10^20 - 16 = 18 nines, an eight and four.

18*9+8+4 = 174

但是我没有成功地将这个解决方案转换为我的问题。(我尝试了很多)。

*我将这个问题标记为 .net,因为我可以使用 .net 库中的字符串函数和数学函数。*

问题

这里有什么技巧可以让我对 x^n 的结果求和吗?

这里有什么技巧?

编辑 #2:添加了 .net2 标签(其中 biginteger 不可用)——我想知道如果没有 biginteger 我怎么能做到这一点。(我正在寻找隐藏的技巧)

最佳答案

您可以利用 BigInteger结构来做到这一点。正如它在 MSDN 中所写的那样

The BigInteger type is an immutable type that represents an arbitrarily large integer whose value in theory has no upper or lower bounds.

基本上在创建 BigInteger 实例并评估指数后,您可以将其转换为字符串。之后,您将遍历该字符串的每个字符并将每个字符转换为整数。将所有这些整数相加,您就会得到答案。

BigInteger bi = new BigInteger(2);
var bi2 = BigInteger.Pow(bi, 30000);
BigInteger sum = new BigInteger();
foreach(var ch in bi2.ToString())
sum = BigInteger.Add(sum, new BigInteger(int.Parse(ch.ToString())));
MessageBox.Show(bi2.ToString() + " - " + sum.ToString());

关于c# - 总结一个很长的二进制数的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16249631/

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