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.