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