Предмет: Информатика, автор: IAmHightIq

На вход программе подаётся число 0 < n ≤ 100

Напишите программу на Python, которая будет выводить все возможные варианты составления числа n из чисел 1;2;3;4....n

Числа могут повторяться


К примеру:

Ввод

3

Вывод

1 + 1 + 1 = 3

1 + 2 = 3

3 = 3


BnanOs: 50 балов мало
Леганда555: Есть ограничения по времени работы? Просто 100 это очень большое число. Если я правильно понял условие, то возможных комбинаций для 100 - 190569292
IAmHightIq: Ограничения нет, вывести только не получится. Но это просто задача на практику, так что не важно как она будет работать с большими числами, они скорее всего не будут проверяться

Ответы

Автор ответа: Zergloing
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}')


Zergloing: Если мой ответ вас удовлетворил, то, пожалуйста, отметьте его как "Лучший ответ".
Похожие вопросы
Предмет: Окружающий мир, автор: ЕррорСанс
Предмет: Математика, автор: Ttwyquisjx
Предмет: Английский язык, автор: dashastr256