Cómo encontrar la cantidad de formas de representar un número sumando otros números

Supongamos que desea encontrar el número total de posibles soluciones para la siguiente ecuación
[matemáticas] x1 + x2 + x3 = k [/ matemáticas] a <= xi <= b
El número total de solución es el coeficiente de x ^ k en
[matemáticas] [x ^ {min (x1)} +… x ^ {max (x1)}] [/ matemáticas] [matemáticas] * [x ^ {min (x2)} +… x ^ {max (x2)} ][/matemáticas]
[matemáticas] * [x ^ {(min (x3)} +… x ^ {max (x3)}] [/ matemáticas]
que en este caso es
[matemática] [x ^ a +… x ^ b] * [x ^ a +… x ^ b] * [x ^ a +… x ^ b] [/ matemática] (“…” representa la x ^ {valores_en_rango_de_xi})
Entonces, en su caso, la respuesta será el número total de solución de la ecuación
[matemática] x1 + x2 + x3 = 100 [/ matemática] donde x1 puede ser 0,1,2,3..100
x2 puede ser 0,2,4,6,8..100
x3 puede ser 0,5,10,15, .. 100
El número total de soluciones es el coeficiente de x ^ (100) en
[matemáticas] (x ^ 0 + x ^ 1 + x ^ 2… .x ^ {100}) * (x ^ 0 + x ^ 2 + x ^ 4 + .. x ^ {100}) [/ matemáticas]
[matemáticas] * (x ^ 0 + x ^ 5 + x ^ 10 + .. x ^ {100}) [/ matemáticas]