Сумма факториалов от 1 до n формула

По данному натуральном 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)

Добавить комментарий Отменить ответ

Пн Вт Ср Чт Пт Сб Вс

ЕГЭ на соточку для чайников

Прошу прощения, что так долго пропадал. Питошка вернулся, да еще и с группой в вконтакте, подписывайтесь. Помимо этого, на питошке откроется новая рубрика, в которой будут четкие объяснения всех заданий ЕГЭ и ОГЭ по информатике, внимательно прочитав которые, я уверен, вы улучшите свои баллы на экзамене 🙂

Обозначим $%n!$% произведение всех натуральных чисел от $%1$% до $%n$%.
Вычислить $%1 cdot1!+2 cdot2!+3 cdot3!+. +n cdot n!$%.

задан 7 Дек ’14 15:16

Кеша207
270 ● 3 ● 18
95&#037 принятых

1 ответ

Поскольку $%ncdot n!=(n+1)!-n!$%, то искомая сумма равна $%(n+1)!-1.$%

отвечен 7 Дек ’14 15:40

Откуда вы получили это равенство?

@Кеша207: представьте каждое слагаемое в виде разности и сложите всё вместе. Тогда "минусы" сократятся с "плюсами", и останется два указанных "крайних" члена.

Здравствуйте

Математика – это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

Автор – А.В. Алексеев , дата – 25.01.2012

Разбор

Так как факториал быстро растущая целочисленная функция, то для получения суммы факториалов необходимо использовать длинную арифметику. Если вычислять сумму по формуле слева направо, то потребуется реализовать две операции длинной арифметики: сложение и умножение. Для упрощения набора используемых операций преобразуем формулу 1!+2!+…+N!=1+2*(1+3*(…(1+N)…)). А это позволяет использовать вместо сложения более просто программируемую операцию добавления единицы.

Программа

n, p, i, k, l : integer;

a : array [1..1000] of integer;

for i:=n downto 2 do begin p:=0;

for l:=1 to k do begin

p:=p+a[l]*i; a[l]:=p mod 10; p:=p div 10 end;

while p>0 do begin k:=k+1; a[k]:=p mod 10; p:=p div 10 end;

l:=1; while a[l]=9 do begin a[l]:=0; l:=l+1 end;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector