Условие
По данному натуральном nn вычислите сумму 1!+2!+3!+…+n!. В решении этой задачи можно использовать только один цикл. Пользоваться математической библиотекой math в этой задаче запрещено.
Решение
Комментарии
n = int(input())
partial_factorial = 1
partial_sum = 0
for i in range(1, n + 1):
partial_factorial *= i
partial_sum += partial_factorial
print(partial_sum)
res = 1
sum = 0
n = int(input())
for i in range(1, n + 1):
res *= i
sum += res
print(sum)
Добавить комментарий Отменить ответ
ЕГЭ на соточку для чайников
Прошу прощения, что так долго пропадал. Питошка вернулся, да еще и с группой в вконтакте, подписывайтесь. Помимо этого, на питошке откроется новая рубрика, в которой будут четкие объяснения всех заданий ЕГЭ и ОГЭ по информатике, внимательно прочитав которые, я уверен, вы улучшите свои баллы на экзамене
Как вычислить сумму 1!+2!+3!+. +n!
По данному натуральном n вычислите сумму 1!+2!+3!+. +n!. В решении этой задачи можно использовать только один цикл. Пользоваться математической библиотекой math в этой задаче запрещено.
Однако у меня решение не выходит. Подскажите, как решить правильно?
![]()
Если на вход подаются только натуральные n , то можно так:
(Вам же нужно 1!+2!+3!+. +n! ? Или вы не опечатались? Если нет, то sum_of_factorials просто на 2 домножить в конце и отнять 1 ).
Это весьма простое динамическое программирование. Вам не нужно каждый раз заново вычислять curr_factorial , чтобы его прибавить, т.к. нынешний curr_factorial — это просто старое значение, домноженное на номер текущего цикла итерации.
Здесь используется факт, что факториал числа равен факториалу предыдущего числа умноженный на текущее число — например 5! == 4! * 5 , потому что