Как вычислить сумму 1!+2!+3!+...+n!
📁 python, ии
Условие задачи:
По данному натуральном 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) Однако у меня решение не выходит. Подскажите, как решить правильно?
Если на вход подаются только натуральные 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 - это просто старое значение, домноженное на номер текущего цикла итерации.
Войдите чтобы оставить ответ