аватар question@mail.ru · 01.01.1970 03:00

Как вычислить сумму 1!+2!+3!+...+n!

Условие задачи:

По данному натуральном n вычислите сумму 1!+2!+3!+...+n!. В решении этой задачи можно использовать только один цикл. Пользоваться математической библиотекой math в этой задаче запрещено.

n = int(input())N = 1sum = 0for a in range(1, n+1):    for b in range(1, a+1):        N = N * b    sum += Nprint(sum)    

Однако у меня решение не выходит. Подскажите, как решить правильно?

аватар answer@mail.ru · 01.01.1970 03:00

Если на вход подаются только натуральные n, то можно так:

n = int(input())sum_of_factorials = 1curr_factorial = 1for i in range(2, n + 1):    curr_factorial *= i    sum_of_factorials += curr_factorialprint(sum_of_factorials)

(Вам же нужно 1!+2!+3!+...+n! ? Или вы не опечатались? Если нет, то sum_of_factorials просто на 2 домножить в конце и отнять 1).

Это весьма простое динамическое программирование. Вам не нужно каждый раз заново вычислять curr_factorial, чтобы его прибавить, т.к. нынешний curr_factorial - это просто старое значение, домноженное на номер текущего цикла итерации.

Последние

Похожие