不使用BigInt计算为2 ^ 1000的总和

Chr*_*s G 6 c# bigint c#-4.0

正如你们中的一些人可能会注意到这个问题是来自Project Euler的问题16.我已经使用C#4.0的新"bigInt"功能解决了这个问题,这个功能非常简单,但也没有真正学到我应该学到的东西.我假设因为它是2 ^ 1000会有某种位移解决方案,但我无法弄清楚它究竟是如何工作的.

有没有人知道如何在不使用bigint的情况下计算2 ^ 1000?

Joh*_*ooy 2

这是在 python 中使用数字列表(或数组)来完成此操作的一种相当幼稚的方法

digits = [1]
for n in range(1000):
    newdigits = []
    carry = 0
    for digit in digits:
        s = 2*digit+carry
        carry = s/10
        s = s%10
        newdigits.append(s)
    if carry:
        newdigits.append(carry)
    digits = newdigits
print "".join(map(str,reversed(digits)))
Run Code Online (Sandbox Code Playgroud)

  • 这是欧拉计划的剧透,你不应该发布准备使用的代码。 (4认同)
  • 如果你环顾四周,你总是可以找到代码,你必须想自己解决问题 (2认同)