:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте ::
Путь: Математика » Комбинаторика и перебор » Все представления в виде произведения(cуммы)
  Перечислить все различные представление числа N в виде всевозможных произведений (сумм) K натуральных чисел



Дополним условия тем, что N, K-вводятся, 1<K<N.

Представления, отличающихся только порядком сомножителей (слагаемых), считаются одинаковыми.

Предложим простой способ построения всех разбиений числа.

на слагаемые. Разбиения будут строится в порядке, обратном лексикографическому. Очевидно, что первым разбиением в таком порядке будет разбиение, содержащее одно слагаемое, равное, а последним - разбиение из слагаемых, равных 1.

Как выглядит разбиение, следующее непосредственно за разбиением

n=с[1]+...+с[к] (1)

Будем искать разбиение, которое имеет самое большое число начальных слагаемых, равных начальным слагаемым разбиения (1) - обозначим эти слагаемые а[1],...,а[t-1] - и оставшиеся слагаемые которого определяются разбиением, непосредственно следующим за разбиением

s=a[t]+a[t+1]+...+a[k].

Легко видеть, что эти условия однозначно определяют значение t

t=max{i:a[i]>1}.

Таким образом, задача свелась к нахождению разбиения, непосредственно следующего за разбиением s=a[t]+1+...+1, где a[t]>1, а количество единиц равно k-t.Таким разбиением является разбиение s1=p+p+...+p+(s mod p), где p=a[t]-1.