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

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

 в виде суммы 

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

 в виде суммы 

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

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

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

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

 равна 

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

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

 Пусть 

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

 и пусть 

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

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

 только три элемента:
![$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)
Из чего следует, что 
