На вход программе подаётся число 0 < n ≤ 100
Напишите программу на Python, которая будет выводить все возможные варианты составления числа n из чисел 1;2;3;4....n
Числа могут повторяться
К примеру:
Ввод
3
Вывод
1 + 1 + 1 = 3
1 + 2 = 3
3 = 3
BnanOs:
50 балов мало
Есть ограничения по времени работы? Просто 100 это очень большое число. Если я правильно понял условие, то возможных комбинаций для 100 - 190569292
Ограничения нет, вывести только не получится. Но это просто задача на практику, так что не важно как она будет работать с большими числами, они скорее всего не будут проверяться
Ответы
Ответ дал:
1
Ответ:
from itertools import combinations_with_replacement
def sumt(q, *tr):
result = []
for i in range(1, q + 1):
for j in combinations_with_replacement(list(tr), i):
if sum(list(j)) == q:
result.append(j)
return result[::-1]
n = int(input())
t = sumt(n, *range(1, n + 1))
for num in t:
a = list(map(str, num))
if len(a) == 1:
print(f'{"".join(a)} = {n}')
else:
a = ' + '.join(a)
print(f'{a} = {n}')
Если мой ответ вас удовлетворил, то, пожалуйста, отметьте его как "Лучший ответ".
Вас заинтересует
2 года назад
2 года назад
2 года назад
2 года назад
8 лет назад
9 лет назад
9 лет назад