Work out the first ten digits of the sum of the following one-hundred 50-digit numbers. So, is the question sum the 5000 digits and the answer is the first 10 digits in the result?
bignumber = list of the 5000 digits sum(bignumber) = abcdefghijklmnopqrst... answer = abcdefghj Well when I do this sum(bignumber) = 22660 (which even is not 10 digits)...
have I misread the question?
def foo(): with open ("bignumber", "r") as myfile: data=myfile.read().replace('\n', '') data = map(long, data) datasum = sum(data) return (datasum) 43 Answers
You are misreading the question.
They give you 100 numbers that you need to sum, each of which is 50 digits long (aka magnitude of X*10^50). The 50 digit part is there so you cant just use traditional int/long data types (As JLLAgrange points out, this part shouldn't be a problem for python since integers have no max value).
1Each number is 50 digits long (i.e., each line is a digit). You might try
def foo(): with open ("bignumber", "r") as myfile: data=myfile.read() data = map(int, data) datasum = sum(data) return datasum I think you understood the question correctly, but applied wrongly in Python.
You are doing:
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. What you need:
with open(..) as fileObj: data = [long(line.strip()) for line in fileObj]