Si escribimos una secuencia de números como los coeficientes de una serie de potencias, entonces esa serie de potencia se denomina función generadora (ordinaria) (o Gf) de esa secuencia. Es decir, si para alguna función F(x)
y serie de enteros a(n)
tenemos:
a(0) + a(1)x + a(2)x^2 + a(3)x^3 + a(4)x^4 + ... = F(x)
Entonces F(x)
es la función generadora de a
. Por ejemplo, la serie geométrica nos dice que:
1 + x + x^2 + x^3 + x^4 + ... = 1/(1-x)
Entonces la función generadora de 1, 1, 1, ...
es 1/(1-x)
. Si diferenciamos ambos lados de la ecuación anterior y multiplicamos por x
, obtenemos la siguiente igualdad:
x + 2x^2 + 3x^3 + 4x^4 + ... = x/(1-x)^2
Entonces la función generadora de 1, 2, 3, ...
es x/(1-x)^2
. Generar funciones es una herramienta muy poderosa, y puede hacer muchas cosas útiles con ellas. Aquí se puede encontrar una breve introducción , pero para una explicación realmente exhaustiva existe la sorprendente función de generación de libros.
En este desafío, tomará una función racional (el cociente de dos polinomios con coeficientes enteros) como entrada como dos conjuntos de coeficientes enteros, primero el numerador y luego el denominador. Por ejemplo, la función f(x) = x / (1 - x - x^2)
se codificará como [0, 1], [1, -1, -1]
en la entrada.
Dada esta entrada, su programa debe imprimir infinitamente los coeficientes de la serie de potencia que equivale a la función de generación, uno por línea, comenzando en el coeficiente de x
, luego x^2
, etc.
Ejemplos:
[1], [1, -1] -> 1, 1, 1, 1, 1, 1, 1, ...
[1], [2, -2] -> 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ...
[0, 1], [1, -2, 1] -> 1, 2, 3, 4, 5, 6, 7, 8, ...
[0, 1], [1, -1, -1] -> 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
[1], [1, -2] -> 1, 2, 4, 8, 16, 32, 64, 128, ...
[0, 1, 1], [1, -3, 3, -1] -> 1, 4, 9, 16, 25, 36, ...