Задача SUM
Рассматриваются
все разбиения натурального числа N
на сумму К неотрицательных
слагаемых (1<=N<=32, 2<=K<=32).
Суммы, отличающиеся только порядком
слагаемых, считаем различными.
Упорядочим все разбиения по
невозрастанию слагаемых и
пронумеруем их. Например, при N=4,К=3
имеем
Номер |
Слагаемые |
1-e |
2-e |
3-e |
1 |
4 |
0 |
0 |
2 |
3 |
1 |
0 |
3 |
3 |
0 |
1 |
4 |
2 |
2 |
0 |
5 |
2 |
1 |
1 |
6 |
2 |
0 |
2 |
7 |
1 |
3 |
0 |
8 |
1 |
2 |
1 |
9 |
1 |
1 |
2 |
10 |
1 |
0 |
3 |
11 |
0 |
4 |
0 |
12 |
0 |
3 |
1 |
13 |
0 |
2 |
2 |
14 |
0 |
1 |
3 |
15 |
0 |
0 |
4 |
Напишите программу, которая находит
разбиение по номеру либо номер по
разбиению.
Ввод-вывод.
Вы
вводите с клавиатуры 0, если
необходимо найти разбиение по
номеру, и 1, если номер по
разбиению. В первом случае вы
вводите количество слагаемых, сумму
и номер разбиения. Во втором случае
вы вводите количество слагаемых и
затем разбиение. Все числа
разделены пробелами. Вы выводите на
экран разбиение либо номер.
Примеры:
Ввод> 0 3 4 9
Вывод< 1 1 2
Ввод> 1 3 1 2 1
Вывод< 8