유리 함수 근사

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

함수 f(x)f(x)는 차수가 nn인 다항식 p(x)p(x)로 근사할 수 있다. p(x)p(x)의 계수를 f(x)f(x)의 멱급수 전개(x=0x = 0 근방)의 앞쪽 계수와 일치시키면 된다. 예를 들어,

11x1+x+x2++xn\frac{1}{1-x} \approx 1 + x + x^2 + \cdots + x^n

이다.

그러나 다항식은 '얌전한' 함수여서, 특이점을 가진 함수처럼 나쁘게 행동하는 함수를 근사할 때는 잘 맞지 않는다. 이를 해결하기 위해 두 다항식 p(x)p(x), q(x)q(x)의 비 p(x)/q(x)p(x)/q(x) 형태의 유리 함수로 근사할 수 있다.

mm, nnf(x)f(x) 멱급수의 처음 m+nm+n개 계수가 주어진다. 차수가 각각 최대 m1m-1, n1n-1인 두 다항식 p(x)p(x), q(x)q(x)를 구하라. 단, q(x)f(x)p(x)q(x)f(x) - p(x)의 멱급수 전개에서 처음 m+n1m+n-1개 계수가 모두 00이고 xm+n1x^{m+n-1} 항의 계수가 11이어야 한다. 즉,

q(x)f(x)p(x)=xm+n1+q(x)\cdot f(x) - p(x) = x^{m+n-1} + \cdots

를 만족해야 한다. 여기서 \cdots는 차수가 m+n1m+n-1보다 높은 항들을 뜻한다. 이렇게 하면 f(x)f(x)p(x)/q(x)p(x)/q(x)로 근사할 수 있다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 케이스는 한 줄에 다음 형식으로 주어진다.

m n f0 f1 ... f(m+n-1)

여기서 fif_if(x)f(x)의 멱급수 전개에서 xix^i의 계수이다. 1m1 \le m, 1n41 \le n \le 4, 2m+n102 \le m+n \le 10이며, 모든 fif_ifi5|f_i| \le 5인 정수이다. 입력의 끝은 m=n=0m = n = 0인 줄로 표시되고, 이 줄에는 ff의 계수가 없다. 주어지는 입력에 대한 해는 유일하다고 가정해도 된다.

출력

각 테스트 케이스마다 두 줄을 출력한다. 첫째 줄에 다항식 p(x)p(x)를, 둘째 줄에 q(x)q(x)를 출력한다.

다항식 p(x)p(x)ii의 오름차순으로 정렬된 쌍 (pi,i)(p_i, i)의 목록으로 출력한다. 여기서 pip_ixix^i 항의 00이 아닌 계수이다. 00이 아닌 각 계수 pip_ia/ba/b 꼴로 출력하되 b>0b > 0이고 a/ba/b는 기약분수여야 한다. 또한 b=1b = 1이면 aa만 출력한다(bb는 생략). p(x)=0p(x) = 0이면 (0,0)(0,0)만 있는 줄을 출력한다. 목록의 쌍들은 공백 하나로 구분한다.

다항식 q(x)q(x)도 같은 방식으로 출력한다. 케이스와 케이스 사이에는 빈 줄을 하나 넣는다.

힌트

다항식 p(x)p(x)p0+p1x+p2x2+p_0 + p_1 x + p_2 x^2 + \cdots의 형태로 쓸 수 있으며, q(x)q(x)도 마찬가지이다. 이 문제에서 두 다항식의 계수 pip_i, qiq_i는 유리수이다.

f(x)f(x)x=0x = 0에 대한 멱급수 전개는 f0+f1x+f2x2+f_0 + f_1 x + f_2 x^2 + \cdots로 쓸 수 있으며, 이 문제에서 fif_i는 정수이다.