这个C#代码如何解决答案?
我已经解决了项目欧拉问题16,但发现这个相当新颖的方法,但我不能让我的周围使用(从http://www.mathblog.dk/project-euler-16/)技术头:这个C#代码如何解决答案?
int result = 0; BigInteger number = BigInteger.Pow(2, 1000);
while (number > 0) {
result += (int) (number % 10);
number /= 10;
}
我的版本似乎更传统的,但我觉得上面的方法是冷却器。
var result = BigInteger .Pow(2, 1000)
.ToString()
.Aggregate(0, (total, next) => total + (int) Char.GetNumericValue(next));
如何进行数学上的第一种方式工作,这是很酷,但我需要一些解释,以帮助我了解,所以如果有人会这么好心给我解释,我真的很感激。
注意:如果我在错误的部分张贴,请让我知道更好的地方问。
回答:
value % 10
将返回最后一位数字(除以10后的余数)。将整数除以10将删除此数字。
将该数字看作一个列表,并且您只是将列表出来并对这些值进行求和。
回答:
他们找到了数字2^1000。
模10获得最低有效位。 E.G. 12034%10 = 4
将10位分为最低有效位。 E.G. 12034/10 = 1203
他们总结了这些最不重要的数字。
回答:
number % 10
提取最不重要的十进制数字。例如12345
=>5
number/10
删除最不重要的十进制数字。这是有效的,因为C#中的整数除法将其余部分抛弃。例如12345
=>1234
因此,上面的代码提取每个数字,将其添加到总和,然后将其删除。它会重复此过程,直到所有数字都被删除,并且数字为0
。
回答:
这很简单:
想象一下:
数= 54
它采用模来获得这个由10
例如divded其余54/10 = 5其余4
它然后将这个数字(4)的结果,然后除以10(存储小数转换成int其丢弃)
所以然后数= 5
数再次相同,5/10 = 0 5剩余
添加他们togther,结果现在是9
,以此类推,直到数目为0 :)
(在这种情况下,9是答案)
回答:
模数运算符提供除法的余数。所以,MOD 10将成为这个号码中的一员。然后,除以10的整数将移动一切,以便可以重复。
举例人数12345:
12345 % 10 = 5 12345/10 = 1234
1234 % 10 = 4
1234/10 = 123
123 % 10 = 3
123/10 = 12
12 % 10 = 2
12/10 = 1
1 % 10 = 1
1/10 = 0 (loop ends)
在每个模量的结果,执行除了所以你会得到5+4+3+2+1
以上是 这个C#代码如何解决答案? 的全部内容, 来源链接: utcz.com/qa/266834.html