QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB

#19634. 数学での先生の課題

Statistics

学生が数学の授業で日常的に行う課題の一つは、多項式方程式を解くことである。つまり、例えば $X^2-4X+1$ のような多項式が与えられたとき、その根($2\pm\sqrt{3}$)を求めることである。

学生の課題が与えられた多項式の根を求めることなら、先生の課題は与えられた根を持つ多項式を求めることである。Galsone先生は熱心な数学教師だが、解が $a+b\sqrt{c}$ という単純な形の二次方程式を解くことに飽きてしまった。もう少し複雑な解を持つ高次方程式を作りたいと考えている。数学の授業の問題でよくあるように、すべての係数を整数に保ち、指定された根を持つという条件のもとで多項式の次数をできるだけ小さくしたい。先生側の課題を行うプログラムを書いて彼女を助けよ。

次の形の数 $t$ が与えられる。

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

ここで $a$ と $b$ は異なる素数であり、$m$ と $n$ は 1 より大きい整数である。

この問題では、$t$ の整数上の最小多項式を求める。これは、次の条件を満たす多項式 $F(X)=a_dX^d+a_{d-1}X^{d-1}+\cdots+a_1X+a_0$ である。

  1. 係数 $a_0,\ldots,a_d$ は整数であり、$a_d>0$ である。

  2. $F(t)=0$.

  3. 次数 $d$ は、上の二条件を満たす多項式の中で最小である。

  4. $F(X)$ は原始多項式である。つまり、係数 $a_0,\ldots,a_d$ は 1 より大きい公約数を持たない。

例えば、$\sqrt{3}+\sqrt{2}$ の整数上の最小多項式は $F(X)=X^4-10X^2+1$ である。$F(t)=0$ の確認は、次の計算のように簡単である($\alpha=\sqrt{3}$、$\beta=\sqrt{2}$)。

$$ \begin{aligned} F(t)&=(\alpha+\beta)^4-10(\alpha+\beta)^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\alpha\beta+36+8\alpha\beta+4-10(3+2\alpha\beta+2)+1\\ &=(9+36+4-50+1)+(12+8-20)\alpha\beta\\ &=0 \end{aligned} $$

$F(t)$ の次数が実際に最小であることの確認は、少し難しい。幸い、この問題の条件、すなわち $a$ と $b$ が異なる素数で、$m$ と $n$ が 1 より大きい場合、最小多項式の次数は常に $mn$ である。さらに、常にモニックである。つまり、最高次の項の係数($a_d$)は 1 である。

入力

入力は複数のデータセットからなり、それぞれ次の形式で与えられる。

$$a\quad m\quad b\quad n$$

この行は $\sqrt[m]{a}+\sqrt[n]{b}$ を表す。最後のデータセットの後には、四つのゼロからなる一行がある。同じ行の数は一つの空白で区切られる。

各データセットは次の条件を満たす。

  1. $\sqrt[m]{a}+\sqrt[n]{b}\le 4$.

  2. $mn\le 20$.

  3. 答えの係数 $a_0,\ldots,a_d$ は $(-2^{31}+1)$ 以上 $(2^{31}-1)$ 以下である。

出力

各データセットについて、整数上の最小多項式 $F(X)=a_dX^d+a_{d-1}X^{d-1}+\cdots+a_1X+a_0$ の係数を次の形式で出力せよ。

$$a_d\quad a_{d-1}\quad\cdots\quad a_1\quad a_0$$

非負整数には符号(+ または -)を付けずに出力する。同じ行の数は一つの空白で区切り、出力にほかの文字や余分な空白を含めてはならない。

入出力例

入力 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

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

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.