Это частный случай проблемы с монетой , которая в общем случае решается с помощью динамического программирования.
Но здесь мы можем разработать простое решение.Я рассматриваю x, y, z> 0
x + 4 * (y + z) = n Пусть y + z = q = p + 1 (q> 1, p> 0)
x + 4 * q = n
x + 4 * p = n-4
Есть M = Этаж ((n-5) / 4) вариантыдля x и p, следовательно, существует M возможных значений q = 2..M + 1 Для каждого q> 1 существуют (q-1) варианты y и z: q = 1 + (q-1) = 2 +(q-2) + .. + (q-1) + 1
Итак, мы имеем N = 1 + 2 + 3 + ... + M = M *(M + 1) / 2 решения
Пример:
n = 15;
M = (15 - 5) div 4 = 2
N = 3
(3,1,2), (3,2,1), (7,1,1)