Якщо ми запишемо послідовність чисел як коефіцієнти ряду потужностей, то цей силовий ряд називається (звичайною) функцією, що генерує (або 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, ...