#P3948. Common Polynomial
Common Polynomial
描述
数学老师松平先生正在向学生们教授多项式的展开和因式分解。上周,他布置了一项作业,要求学生们写出两个多项式(关于单变量),并计算它们的最大公因式(GCM)。但他发现手动检查学生的答案很枯燥,因此请你编写一个程序来检查这些答案。
以下仅考虑系数为整数的多项式,即整系数多项式。
当给定两个整系数多项式和时,如果存在整系数多项式和,使得且,则整系数多项式是和的公因式。
两个整系数多项式的GCM是次数最高的公因式(关于)。你需要编写一个程序来计算两个多项式的GCM。
已知当忽略常数乘法因子时,给定的两个多项式的GCM是唯一的。也就是说,如果和都是两个多项式和的GCM,则存在非零整数和,使得。
输入
输入由多个数据集组成。每个数据集由两行输入组成,每行表示一个多项式,其格式如下:
- 基本元素(primary)是变量、数字序列或用括号括起来的表达式。例如:、、。
- 因子(factor)是基本元素本身,或后跟指数的基本元素。指数由符号^后跟数字序列组成。例如:、、。
- 项(term)由一个或多个相邻的因子组成。例如:、、。
- 表达式(expression)由一个或多个由或连接的项组成。此外,表达式的第一项可以可选地以减号开头。例如:、。
整数常数、指数、乘法(相邻因子)、加法()和减法/取负()具有它们通常的含义。数字序列始终被解释为整数常数。例如,表示,而不是。
输入的任何子表达式在完全展开和标准化后,系数小于,的次数小于。指数中的数字序列表示非零值。
所有数据集的设计都确保使用32位二进制补码整数的标准算法可以解决该问题而不会溢出。
输入的结束由一行包含一个句点表示。
输出
对于每个数据集,在一行中输出GCM多项式表达式,格式如下:
其中和()是正整数,且,并且的最大公约数为1。
此外:
- 当等于1时,除非对应的为0,否则应省略。
- 应整体省略。
- 应写为。
输入数据 1
-(x^3-3x^2+3x-1)
(x-1)^2
x^2+10x+25
x^2+6x+5
x^3+1
x-1
.
输出数据 1
x^2-2x+1
x+5
1