교사가 푸는 수학

시간 제한5초메모리 제한128 MB

요약
서로 다른 소수 a, b에 대해 t = a^(1/m) + b^(1/n)로 주어질 때, 차수가 mn인 정수 최소다항식을 구하는 문제입니다.
난이도

보통10점 중 7점

유형
수학, 정수론, 구현
정답자
아직 제출이 없습니다

문제

학생들이 수학 시간에 흔히 하는 일 중 하나는 다항식 방정식을 푸는 것이다. 즉 어떤 다항식, 예를 들어 X2−4X+1X^2 - 4X + 1이 주어졌을 때 그 근 2±32 \pm \sqrt{3}을 찾는 것이다.

학생의 과제가 주어진 다항식의 근을 찾는 것이라면, 교사의 과제는 주어진 근을 갖는 다항식을 찾는 것이다. 열정적인 수학 교사 Galsone 선생님은 a+bca + b\sqrt{c}처럼 단순한 이차방정식의 해를 구하는 데 싫증이 났다. 그래서 해가 조금 더 복잡한 고차 방정식을 만들고 싶어 한다. 수학 시간 문제가 으레 그렇듯, 그는 모든 계수를 정수로 유지하고 (주어진 근을 갖는다는 조건 아래) 다항식의 차수를 가능한 한 작게 하고 싶어 한다. 교사의 과제를 수행하는 프로그램을 작성해 그를 도와라.

다음 형태의 수 tt가 주어진다.

t=am+bnt = \sqrt[m]{a} + \sqrt[n]{b}

여기서 aa와 bb는 서로 다른 소수이고, mm과 nn은 11보다 큰 정수이다.

당신은 tt의 정수 위의 최소 다항식을 찾아야 한다. 즉 다음 조건을 만족하는 다항식 F(X)=adXd+ad−1Xd−1+⋯+a1X+a0F(X) = a_d X^d + a_{d-1} X^{d-1} + \cdots + a_1 X + a_0를 찾는 것이다.

  1. 계수 a0,…,ada_0, \dots, a_d는 정수이고 ad>0a_d > 0이다.
  2. F(t)=0F(t) = 0이다.
  3. 위 두 조건을 만족하는 다항식 중 차수 dd가 최소이다.
  4. F(X)F(X)는 원시적이다(primitive). 즉 계수 a0,…,ada_0, \dots, a_d는 11보다 큰 공약수를 갖지 않는다.

예를 들어 3+2\sqrt{3} + \sqrt{2}의 정수 위 최소 다항식은 F(X)=X4−10X2+1F(X) = X^4 - 10X^2 + 1이다. F(t)=0F(t) = 0을 확인하는 것은 다음처럼 간단하다(α=3\alpha = \sqrt{3}, β=2\beta = \sqrt{2}로 두자).

F(t)=(α+β)4−10(α+β)2+1F(t) = (\alpha + \beta)^4 - 10(\alpha + \beta)^2 + 1

=(α4+4α3β+6α2β2+4αβ3+β4)−10(α2+2αβ+β2)+1= (\alpha^4 + 4\alpha^3\beta + 6\alpha^2\beta^2 + 4\alpha\beta^3 + \beta^4) - 10(\alpha^2 + 2\alpha\beta + \beta^2) + 1

=9+12αβ+36+8αβ+4−10(3+2αβ+2)+1= 9 + 12\alpha\beta + 36 + 8\alpha\beta + 4 - 10(3 + 2\alpha\beta + 2) + 1

=(9+36+4−50+1)+(12+8−20)αβ=0= (9 + 36 + 4 - 50 + 1) + (12 + 8 - 20)\alpha\beta = 0

FF의 차수가 실제로 최소임을 확인하는 것은 조금 더 어렵다. 다행히 이 문제의 조건 — aa와 bb가 서로 다른 소수이고 m,nm, n이 11보다 큼 — 아래에서는 최소 다항식의 차수가 항상 mnmn이다. 또한 항상 모닉(monic)이다. 즉 최고차항의 계수 ada_d가 11이다.

입력은 여러 개의 데이터셋으로 이루어지며, 각 데이터셋의 형식은 다음과 같다.

a m b n

이 줄은 am+bn\sqrt[m]{a} + \sqrt[n]{b}를 나타낸다. 마지막 데이터셋 다음에는 네 개의 00으로 이루어진 한 줄이 온다. 한 줄 안의 수들은 공백 하나로 구분된다.

모든 데이터셋은 다음 조건을 만족한다.

  1. am+bn≤4\sqrt[m]{a} + \sqrt[n]{b} \le 4.
  2. mn≤20mn \le 20.
  3. 답의 계수 a0,…,ada_0, \dots, a_d는 −231+1-231 + 1 이상 231−1231 - 1 이하이다.

입력

입력은 여러 개의 데이터셋으로 이루어지며, 각 데이터셋의 형식은 다음과 같다.

a m b n

이 줄은 am+bn\sqrt[m]{a} + \sqrt[n]{b}를 나타낸다. 마지막 데이터셋 다음에는 네 개의 00으로 이루어진 한 줄이 온다. 한 줄 안의 수들은 공백 하나로 구분된다.

모든 데이터셋은 다음 조건을 만족한다.

  1. am+bn≤4\sqrt[m]{a} + \sqrt[n]{b} \le 4.
  2. mn≤20mn \le 20.
  3. 답의 계수 a0,…,ada_0, \dots, a_d는 −231+1-231 + 1 이상 231−1231 - 1 이하이다.

출력

각 데이터셋에 대해, 정수 위 최소 다항식 F(X)=adXd+ad−1Xd−1+⋯+a1X+a0F(X) = a_d X^d + a_{d-1} X^{d-1} + \cdots + a_1 X + a_0의 계수를 다음 형식으로 출력한다.

ad ad-1 ... a1 a0

음이 아닌 정수는 부호(++ 또는 −-) 없이 출력해야 한다. 한 줄 안의 수들은 공백 하나로 구분해야 하며, 출력에 그 밖의 문자나 여분의 공백이 나타나서는 안 된다.

예제1

  1. 예제 1

    입력
    3 2 2 2
    3 2 2 3
    2 2 3 4
    31 4 2 3
    3 2 2 7
    0 0 0 0
    
    예상 출력
    1 0 -10 0 1
    1 0 -9 -4 27 -36 -23
    1 0 -8 0 18 0 -104 0 1
    1 0 0 -8 -93 0 24 -2976 2883 -32 -3720 -23064 -29775
    1 0 -21 0 189 0 -945 -4 2835 -252 -5103 -1260 5103 -756 -2183