так, снова задумался... почему если перебирать

это эквивалентная задача?
Потому, что существует взаимно-однозначное соответствие между представлениями числа

в виде суммы

положительных целых чисел и представлениями числа

в виде суммы

неотрицательных целых чисел.
когда из суммы вычитается количество слагаемых, убираем комбинацию единиц этой суммы (отсюда затем надо прибавть

)
но переборы то все равно делать все (минус один, который убрали), разве нет
Число

-представлений равно числу

-представлений, так что никакие комбинации не убираются и никакие комбинации не добавляются.
откуда следует, что перебираются "только представления с известной суммой"
Пусть сумма элементов текущего представления

равна

и алгоритм преобразует его в представление

с суммой элементов

Пусть

будет индексом самого правого ненулевого элемента массива

и пусть

Тогда алгоритм при

изменит в массиве

только три элемента:
![$a'[i-1]=a[i-1]+1;$ $a'[i-1]=a[i-1]+1;$](https://dxdy-01.korotkov.co.uk/f/c/a/e/cae36a00200832f16d8d401108b5994682.png)
![$a'[i]=0;$ $a'[i]=0;$](https://dxdy-02.korotkov.co.uk/f/1/9/3/193f519ad2bb5c536283dd3381e10d7a82.png)
![$a'[n]=a[i]-1;$ $a'[n]=a[i]-1;$](https://dxdy-03.korotkov.co.uk/f/2/7/d/27d458b18bf837400bcc8d4b2e4c9d7d82.png)
и при

изменит только два элемента:
![$a'[n-1]=a[n-1]+1;$ $a'[n-1]=a[n-1]+1;$](https://dxdy-03.korotkov.co.uk/f/2/d/8/2d813d169d349fe1f447b8de4bfe0d4b82.png)
![$a'[n]=a[n]-1.$ $a'[n]=a[n]-1.$](https://dxdy-02.korotkov.co.uk/f/1/8/8/1888df3b65b72c51583e6e62df9a530082.png)
Из чего следует, что
