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

Разбиение это способ представить число n
как сумму натуральных чисел записанных по неубыванию. Например: 6=1+2+3
или 6=1+1+2+2
(заметьте что числа записаны по неубыванию). Но таких разбиений много и поэтому вам интересны только необычные разбиения.

Разбиение называется необычным, если никакие два числа в нем не равны между собой и не отличаются на единицу. Например: 9=1+3+5
это необычное разбиение, но 4=2+2
или 3=1+2
не являются необычными. Ваша задача состоит в том чтобы для заданного числа n
найти все возможные необычные разбиения.

Входные данные
В единственной я входных данных вам дано число n
(1≤n≤80
).

Выходные данные
Выведите все необычные разбиения числа n
. Сами разбиения можно выводить в любом порядке.


xktrimall: прошу вас. Указывайте язык. это на пайтоне надо сделать? или на с++? или еще где?

Ответы

Автор ответа: xktrimall
0

на python можно сделать так

import random

num = 10

n = 0

l = []

while n != num:

   r = random.randint(1, num-n)

   n += r

   if n > num:

       n -= r

       continue

   l.append(r)

print(" + ".join(map(str, l)), '=', num)

в num запихнуть число которое надо разложить.

Приложения:

radeckijbogdan00: помоги
Похожие вопросы