Задача 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
|