Jeśli napiszemy sekwencję liczb jako współczynniki szeregu mocy, wówczas ta seria mocy nazywana jest (zwykłą) funkcją generującą (lub Gf) tej sekwencji. To znaczy, jeśli dla niektórych funkcji F(x)i serii liczb całkowitych a(n)mamy:
a(0) + a(1)x + a(2)x^2 + a(3)x^3 + a(4)x^4 + ... = F(x)
Następnie F(x)jest funkcja generowania a. Na przykład szereg geometryczny mówi nam, że:
1 + x + x^2 + x^3 + x^4 + ... = 1/(1-x)
Więc funkcja generująca 1, 1, 1, ...to 1/(1-x). Jeśli rozróżnimy obie strony powyższego równania i pomnożymy przez xto otrzymamy następującą równość:
x + 2x^2 + 3x^3 + 4x^4 + ... = x/(1-x)^2
Więc funkcja generująca 1, 2, 3, ...to x/(1-x)^2. Generowanie funkcji jest bardzo potężnym narzędziem i można z nimi zrobić wiele przydatnych rzeczy. Krótkie wprowadzenie można znaleźć tutaj , ale dla naprawdę dokładnego wyjaśnienia istnieje niesamowita funkcjonalność generowania książek.
W tym wyzwaniu weźmiesz funkcję racjonalną (iloraz dwóch wielomianów ze współczynnikami całkowitymi) jako dane wejściowe jako dwie tablice współczynników całkowitych, najpierw licznik, a następnie mianownik. Na przykład funkcja f(x) = x / (1 - x - x^2)zostanie zakodowana jak [0, 1], [1, -1, -1]na wejściu.
Biorąc pod uwagę te dane wejściowe, twój program musi nieskończenie drukować współczynniki szeregu mocy, które są równe funkcji generowania, jeden na linię, zaczynając od współczynnika x, a następnie x^2itd.
Przykłady:
[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, ...