如果我们写一个数字序列作为幂级数的系数,则该幂级数称为该序列的(普通)生成函数(或Gf)。也就是说,如果对于某些函数F(x)
和整数系列,a(n)
我们有:
a(0) + a(1)x + a(2)x^2 + a(3)x^3 + a(4)x^4 + ... = F(x)
然后F(x)
是的生成函数a
。例如,几何级数告诉我们:
1 + x + x^2 + x^3 + x^4 + ... = 1/(1-x)
因此,的生成函数1, 1, 1, ...
为1/(1-x)
。如果我们对上面方程的两边求和并乘以x
得到以下等式:
x + 2x^2 + 3x^3 + 4x^4 + ... = x/(1-x)^2
因此,的生成函数1, 2, 3, ...
为x/(1-x)^2
。生成函数是一个非常强大的工具,您可以使用它们来做很多有用的事情。在这里可以找到简短的介绍,但是要获得真正彻底的解释,请参见惊人的图书生成功能学。
在此挑战中,您将有理函数(两个具有整数系数的多项式的商)作为两个整数系数数组的输入作为输入,首先是分子,然后是分母。例如,功能f(x) = x / (1 - x - x^2)
将被编码为[0, 1], [1, -1, -1]
输入中的形式。
给定此输入,您的程序必须无穷大地打印等于生成函数的幂级数的系数,每行一个,从的系数开始x
,然后是x^2
,等等。
例子:
[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, ...
废话,我的语言是为序列构建的,但是我不能真正进行多维数组输入:(
—
Stephen
我实际上只是在数学上没有足够的知识适合这个规范,您是否有机会向我们普通民众发布更多外行的解释?
—
Skidsdev'17年
@trichoplax始终将分子强制为1,这是不相同的。例如,它无法表达我的最后一个例子,即正方形。
—
orlp