Euler项目#13理解(Python)

2024-09-22 14:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

{13}问题

算出下面一百个50位数字之和的前十位数字。 那么,这个问题的和是5000位数字,答案是结果的前10位数字吗?在

bignumber = list of the 5000 digits
sum(bignumber) = abcdefghijklmnopqrst...    
answer = abcdefghj

当我这样做时sum(bignumber) = 22660(甚至不是10位数)。。。在

我读错了这个问题吗?在

^{pr2}$

Tags: ofthe答案answer数字listsumdigits
3条回答

你误读了这个问题。在

他们给你100个数字,你需要和,每一个是50位数字长(也就是X*10^50的大小)。50位的部分是这样的,所以您不能只使用传统的int/long数据类型(正如jlagrange指出的,这个部分对于python来说不应该是个问题,因为整数没有最大值)。在

每个数字长50位(即每行是一位数字)。你可以试试

def foo():
    with open ("bignumber", "r") as myfile:
        data=myfile.read()
    data = map(int, data)
    datasum = sum(data)
    return datasum

我认为您正确地理解了这个问题,但在Python中应用错误。在

你正在做的是:

with open ("bignumber", "r") as myfile:
    data=myfile.read().replace('\n', '')
    #Now `data` is a big huge string of digits
data = map(long, data)
#Now data is an array of 5000 elements of each digit.
#And then you are trying sum this array of digits.

您需要:

^{pr2}$

Look at this example

相关问题 更多 >