Условие задачи:
По данному натуральном n вычислите сумму
1!+2!+3!+…+n!. В решении этой задачи можно
использовать только один цикл. Пользоваться математической библиотекой
math в этой задаче запрещено.
n = int(input())
N = 1
sum = 0
for a in range(1, n+1):
for b in range(1, a+1):
N = N * b
sum += N
print(sum)
Однако у меня решение не выходит.
Подскажите, как решить правильно?
задан 29 июл 2018 в 16:44
БронеславБронеслав
1992 золотых знака6 серебряных знаков13 бронзовых знаков
1
Если на вход подаются только натуральные n
, то можно так:
n = int(input())
sum_of_factorials = 1
curr_factorial = 1
for i in range(2, n + 1):
curr_factorial *= i
sum_of_factorials += curr_factorial
print(sum_of_factorials)
(Вам же нужно 1!+2!+3!+...+n!
? Или вы не опечатались? Если нет, то sum_of_factorials
просто на 2
домножить в конце и отнять 1
).
Это весьма простое динамическое программирование. Вам не нужно каждый раз заново вычислять curr_factorial
, чтобы его прибавить, т.к. нынешний curr_factorial
— это просто старое значение, домноженное на номер текущего цикла итерации.
EzikBro
1,8891 золотой знак6 серебряных знаков21 бронзовый знак
ответ дан 29 июл 2018 в 16:54
0
n = int(input())
suma = 0
previous = 1 # Предыдущий факториал
for i in range(1, n + 1):
current = previous * i # Текущий факториал - см. примечание после кода
suma += current
previous = current
print(suma)
Здесь используется факт, что факториал числа равен факториалу предыдущего числа умноженный на текущее число — например 5! == 4! * 5
, потому что
5! == 1 * 2 * 3 * 4 * 5 == (1 * 2 * 3 * 4) * 5 == 4! * 5
ответ дан 29 июл 2018 в 16:57
MarianDMarianD
14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков
number = int(input())
spicok = list(range(1,number+1))
factorial_current=1
summa=0
for n in spicok:
factorial_current = factorial_current*n
summa += factorial_current
print(summa)
MarianD
14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков
ответ дан 10 окт 2020 в 15:12
n = int(input())
s = 0
res = 1
for i in range (1, n+1):
res *= i
s = s + res
print(s)
S. Nick
70.2k96 золотых знаков36 серебряных знаков55 бронзовых знаков
ответ дан 28 окт 2021 в 20:08
1
Можно было решать, используя библиотеку math.
from math import factorial
n = int(input())
sum = 0
for i in range(1, n+1):
sum += factorial(i)
print(sum)
ответ дан 28 фев 2022 в 18:26
ГорностайкаГорностайка
231 серебряный знак10 бронзовых знаков
3
Предлагаю начать с конца:
n = int(input())
s = 0
for i in range(n, 0, -1): s = (s+1) * i
print(s)
или
from functools import reduce
n = int(input())
print(reduce(lambda s, i: (s+1) * i, range(n, 0, -1)))
ответ дан 9 мая 2022 в 21:22
TigerTV.ruTigerTV.ru
3,1851 золотой знак10 серебряных знаков21 бронзовый знак
Эту задачу можно решить, используя вложенный цикл:
res1 = 1
res2 = 0
number = int(input('Введите число: '))
for i in range(1, number + 1):
for j in range(1, i + 1):
res1 *= j
res2 += res1
res1 = 1
print(res2)
ответ дан 17 мая 2022 в 7:00
Он был так близок !!!
n = int(input("Введите факториал : "))
f=1
summ=0
for i in range(2, n+1):
for j in range (1,i+1):
f = f * j
summ+=f
print("Ваш факториал равен =",summ)
# (ввод - 5)(вывод - 34 560 )
4500zenja
3,8924 золотых знака9 серебряных знаков22 бронзовых знака
ответ дан 9 мая 2022 в 20:14
1
numberN = int(input("Введите число N: "))
while numberN < 0: # фильтр отриц. чисел
numberN = int(input('Число N < 0. Введите N >= 0: '))
factorial = 1
total = 0
for numbers in range(1, numberN + 1):
factorial *= numbers
total += factorial
if total == 0: # исключение для N = 0
total = 1
print(total)
ответ дан 14 июн 2022 в 17:32
1
from math import factorial
print(f"{factorial(int(input()))}")
так не проще?
ответ дан 3 фев 2021 в 6:27
1
Задача «Сумма факториалов» Решение
Условие
По данному натуральном 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)
Комментарии
-
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)-
не правильно
-
Добавить комментарий
B=0
A=1
m=int(input("input a number please "))
for k in range (1,m+1) :
for i in range (1,k+1) :
A=i*A
B=B+A
print("this is your number",B)
if i type 4 ,this gives me 418 , it’s supposed to give me 32, what am i doing wrong here?
I’ve tried everything to correct it
Edit : this to calculate the sum of factorials , if i type 4 it will calculate 1! + 2! + 3! + 4!
asked Feb 25, 2015 at 19:07
1
You forgot to reset A
to 1 before the i loop. The correct answer should be:
B=0
A=1
m=int(input("input a number please "))
for k in range (1,m+1):
A=1
for i in range (1,k+1):
A=i*A
B=B+A
print("this is your number",B)
answered Feb 25, 2015 at 19:09
3
Solution 1
You can use:
math.factorial(x)
Initialize a sum with 0
, use a for loop and add the result of the above line to the sum:
from math import factorial
s=0
m=4
for k in range (1,m+1) :
s=s+factorial(k)
print (s)
Solution 2
Manually:
s=0
m=4
for i in range(1,m+1):
p=1
for k in range(1,i+1):
p*=k
s+=p
print (s)
answered Feb 25, 2015 at 19:12
ROMANIA_engineerROMANIA_engineer
53.8k29 gold badges201 silver badges196 bronze badges
1
or you could try:
partial_sum = 0
current_factorial = 1
for i in range(1, int(input()) + 1):
current_factorial *= i
partial_sum += current_factorial
print(partial_sum)
answered Nov 23, 2018 at 10:34
XorG 0 / 0 / 0 Регистрация: 28.12.2020 Сообщений: 22 |
||||
1 |
||||
Сумма факториалов13.02.2021, 18:28. Показов 27570. Ответов 10 Метки python для начинающих, цикл for (Все метки)
По данному натуральном n вычислите сумму 1!+2!+3!+…+n!. В решении этой задачи можно использовать только один цикл. Входные данные Вводится натуральное число n. Выходные данные Выведите ответ на задачу. Примеры Входные данные Добавлено через 6 минут
0 |
amator_C 260 / 165 / 54 Регистрация: 03.05.2019 Сообщений: 339 |
||||||||||||||||||||
13.02.2021, 19:12 |
2 |
|||||||||||||||||||
f=i
Ещё более краткие решения:
Если разрешено использовать готовую функцию:
Или нужно написать свою:
1 |
0 / 0 / 0 Регистрация: 28.12.2020 Сообщений: 22 |
|
13.02.2021, 20:34 [ТС] |
3 |
Спасибо за ответ,но решение должно быть без import math и без функций,используется только цикл
Python
0 |
amator_C 260 / 165 / 54 Регистрация: 03.05.2019 Сообщений: 339 |
||||
13.02.2021, 22:14 |
4 |
|||
к f присваиваю i У вас же f должен включать в себя и предыдущее произведение, а вы постоянно только инкрементируете его.
3 |
Catstail Модератор 35555 / 19455 / 4071 Регистрация: 12.02.2012 Сообщений: 32,492 Записей в блоге: 13 |
||||
13.02.2021, 22:15 |
5 |
|||
1 |
Arsegg 3484 / 2091 / 560 Регистрация: 02.09.2015 Сообщений: 5,336 |
||||
13.02.2021, 22:20 |
6 |
|||
1 |
Catstail Модератор 35555 / 19455 / 4071 Регистрация: 12.02.2012 Сообщений: 32,492 Записей в блоге: 13 |
||||
13.02.2021, 22:27 |
7 |
|||
А можно и совсем без циклов:
2 |
36 / 51 / 11 Регистрация: 14.01.2021 Сообщений: 406 |
|
13.02.2021, 22:36 |
8 |
def task(n,s=0,f=1,k=2): рекурсия?
0 |
97 / 93 / 81 Регистрация: 10.01.2016 Сообщений: 662 Записей в блоге: 13 |
|
13.02.2021, 22:39 |
9 |
факториал решается только через рекурсию, чтобы меньше захватывало памяти, используем memorize.
0 |
Catstail Модератор 35555 / 19455 / 4071 Регистрация: 12.02.2012 Сообщений: 32,492 Записей в блоге: 13 |
||||
13.02.2021, 23:00 |
10 |
|||
факториал решается только через рекурсию — да почему же? Гораздо проще (особенно в Питоне) — прямым вычислением:
Добавлено через 31 секунду
рекурсия? — она. Зато без циклов.
0 |
0 / 0 / 0 Регистрация: 28.12.2020 Сообщений: 22 |
|
13.02.2021, 23:37 [ТС] |
11 |
Спасибо всем кто ответил!
0 |
Занятие 4. Цикл for
Задача «Сумма факториалов»
Условие
По данному натуральном (n) вычислите сумму (1!+2!+3!+…+n!). В решении этой задачи можно использовать только один цикл. Пользоваться математической библиотекой math в этой задаче запрещено.
Во всех задачах считывайте входные данные через input()
и выводите ответ через print()
.
Тесты
Входные данные | Правильный ответ | Что вывела программа | Результат | |
---|---|---|---|---|
1 |
1 |
|||
2 |
3 |
|||
3 |
9 |
|||
4 |
33 |
|||
5 |
153 |
|||
6 |
873 |
|||
7 |
5913 |
|||
8 |
46233 |
|||
9 |
409113 |
|||
10 |
4037913 |