c# – 在不使用BigInt的情况下计算为2 ^ 1000的总和

前端之家收集整理的这篇文章主要介绍了c# – 在不使用BigInt的情况下计算为2 ^ 1000的总和前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
正如你们中的一些人可能会注意到这个问题是从 Project Euler开始的 problem 16.我用C#4.0的新“bigInt”功能解决了这个问题,这个功能相当简单,但也没有真正学到我应该学到的东西.我假设因为它是2 ^ 1000会有某种位移解决方案,但我无法弄清楚它究竟是如何工作的.

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

解决方法

这是一种相当天真的方式,只需使用数字列表(或数组)在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)))

猜你在找的C#相关文章