Jika kita menulis urutan angka sebagai koefisien dari seri daya, maka seri daya itu disebut fungsi penghasil (atau Gf) dari urutan tersebut. Artinya, jika untuk beberapa fungsi F(x)
dan serangkaian bilangan bulat yang a(n)
kita miliki:
a(0) + a(1)x + a(2)x^2 + a(3)x^3 + a(4)x^4 + ... = F(x)
Kemudian F(x)
adalah fungsi menghasilkan a
. Misalnya, deret geometri memberi tahu kita bahwa:
1 + x + x^2 + x^3 + x^4 + ... = 1/(1-x)
Jadi fungsi pembangkitnya 1, 1, 1, ...
adalah 1/(1-x)
. Jika kita membedakan kedua sisi persamaan di atas dan mengalikannya dengan x
kita mendapatkan persamaan berikut:
x + 2x^2 + 3x^3 + 4x^4 + ... = x/(1-x)^2
Jadi fungsi pembangkitnya 1, 2, 3, ...
adalah x/(1-x)^2
. Menghasilkan fungsi adalah alat yang sangat kuat, dan Anda dapat melakukan banyak hal berguna dengannya. Pengantar singkat dapat ditemukan di sini , tetapi untuk penjelasan yang sangat menyeluruh ada fungsi buku yang menakjubkan.
Dalam tantangan ini, Anda akan mengambil fungsi rasional (hasil bagi dari dua polinomial dengan koefisien integer) sebagai input sebagai dua array koefisien integer, pertama pembilang kemudian penyebut. Misalnya fungsi f(x) = x / (1 - x - x^2)
akan dikodekan seperti [0, 1], [1, -1, -1]
pada input.
Dengan masukan ini, program Anda harus mencetak koefisien seri daya tanpa batas yang sama dengan fungsi pembangkit, satu per baris, mulai dari koefisien x
, kemudian x^2
, dll.
Contoh:
[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, ...