일련의 숫자를 거듭 제곱의 계수로 쓰면, 그 거듭 제곱 을 해당 순서 의 (일반) 생성 함수 (또는 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, ...