Доброго времени суток друзья.
Помогите пожалуйста решить задачу - второй день бьюсь...
Не могу найти подходящий алгоритм.
Поиск в сети к сожалению ничего не дал
Дано:
Число X - квадрат натуральных чисел от 3 и более. К примеру - 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, ...
Диапозон слагаемых [a, b] - минимальное и максимальное слагаемое.
a

[3, 5], b

[4, 15], a<b, a+b < X
Нужно найти:
Алгоритм вычисления всевозможных сочетаний слагаемых числа X принадлежащих диапазонону [a, b].
== Пример: ==
Дано:
X = 16
a = 3
b = 5
Результат:
16 = 3 + 3 + 5 + 5
16 = 3 + 4 + 4 + 5
16 = 4 + 4 + 4 + 4
16 = 3 + 3 + 3 + 3 + 4
----
Как я пробовал найти решения:
1) Пробовал решить программным методом - перебором. Решил только для числа 9, 16, 25.
Для числа 36 приложение работало больше часа без результата. Остановил - сделал вывод что решение для чисел более 36 будет занимать очень много времени.
2) Брал для примера число 16. Представлял слагаемые в виде последовательности (0 0 3 3 5 5) и пробовал реализовать некий счетчик - не получилось.
3) Брал для примера число 16. Пробовал представить последовательность в виде геометрической фигуры стопки из 3 3 5 5 кубиков. Перемещел их со столбца на столбец - не нашел алгоритма.
Надеюсь решение найдется. Прошу помощи
