В данной статье речь пойдет сразу о двух достаточно простых задачах из проекта Эйлера
Задача 13 Найдите первые десять цифр суммы следующих ста 50-значных чисел.
Для загрузки списка из файла я создал функцию get_list - построчно читает числа из файла и возвращает список с преобразованными в integer числами.
Осталось только применить к полученному списку sum и вывести первых десять цифр, используя прием взятия среза в последней строке программы:
def get_list(file,n):
f = open(file, 'r')
lst=[]
for i in range(n):
tmp=f.readline()
lst.append(int(tmp[0:50]))
return lst
lst=get_list('C:\\exp\\100rows.txt',100)
print(str(sum(lst))[0:10])
Задача 16 Сумма цифр степени
s=0
for i in str(2**1000):
s+=int(i)
print(s)
Задача 13 Найдите первые десять цифр суммы следующих ста 50-значных чисел.
Решение
100 чисел 50-ти знаков -достаточно много текста чтобы помещать его в текст программы, а тем более в текст статьи.Для загрузки списка из файла я создал функцию get_list - построчно читает числа из файла и возвращает список с преобразованными в integer числами.
Осталось только применить к полученному списку sum и вывести первых десять цифр, используя прием взятия среза в последней строке программы:
def get_list(file,n):
f = open(file, 'r')
lst=[]
for i in range(n):
tmp=f.readline()
lst.append(int(tmp[0:50]))
return lst
lst=get_list('C:\\exp\\100rows.txt',100)
print(str(sum(lst))[0:10])
Задача 16 Сумма цифр степени
215 = 32768, сумма цифр 3 + 2 + 7 + 6 + 8 = 26.
Какова сумма цифр числа 21000?
Решение: еще проще задачи 13
Нам по сути нужно взять нужную степень двойки в строковом представлении и просуммировать преобразованные обратно в int символы строки как показано ниже
s=0
for i in str(2**1000):
s+=int(i)
print(s)