luogu#P4506. [CTSC2013] 因式分解

[CTSC2013] 因式分解

题目描述

通过代数基本定理,我们知道若计算重根,一个 n 次的多项式在复数域内恰好有 n 个零点(函数值为 0 的点)。现给定一个整系数多项式 F[x],它的 n 个零点恰好都是有理数(即可以写成两个整数相除的形式);同时,若我们把它所有的非零零点(函数自变量不为 0,函数值为 0)去重,则可以得到 r 个互不相同的非零零点,其中第 i 个非零零点可以被表示成下式:

sgni×qipisgn_i \times \frac{q_i}{p_i}

式中sgnisgn_i表示第 i 个零点的符号,pip_iqiq_i为互质的两个正整数。

现在告诉你 F[x],要求你输出将他因式分解后的形式。

输入格式

输入只有一行,包含多项式 F[x]。

多项式一定是如下的形式:

anxa_n x^n+an1xn + a_{n-1}x^n1+a1x+a0{n - 1} + ⋯ a_1x + a_0

次数一定为从高到低,其中aia_i为整数,并且若aia_i为 0,则省略该项,若aia_i为负数,则省略之前的加号,若aia_i的绝对值为 1 且 i 不为 0,则不输出 1,并且保证ana_n不为 0.

详见样例输入。

输出格式

输出一行,表示因式分解后的形式,格式如下:

an(x+u1/v1)a_n (x + u_1/v_1)^t1(x+u2/v2)t_1(x + u_2/v_2)^t2(x+us/vs)t_2 … (x + u_s/v_s)^tst_s

其中 u,v 互质,且 v 为正整数。

其中ui/viu_i/v_i从大到小排列,若ui/vi=0u_i/v_i = 0 则该项为 xx^tit_i,若ui/viu_i/v_i为负数,则省略加号,若viv_i11,则省略/vi/v_i

tit_i11 则省略^tit_i

ana_n±1±1 则将 11 省略。

详见样例输出。

8x^7-258x^5+2112x^3-512x
8(x-4)^2(x-1/2)x(x+1/2)(x+4)^2
-x^2+2x-1
-(x-1)^2

提示

测试点编号 多项式最高次数 互异零点数 系数范围(绝对值)
11 22 10≤ 10
22 44 100≤ 100
33 77 106≤ 10 ^ 6
44 1010 107≤ 10 ^ 7
55 1212 1016≤ 10 ^ {16}
66 3535 55 1024≤ 10 ^ {24}
77 3939 1068≤ 10 ^ {68}
88 4646 44 10104≤ 10 ^ {104}
99 8080 22 1012≤ 10 ^ {12}
1010 5050 11 10316≤ 10 ^ {316}

pi,qip_i,q_i满足:

i=1rpi106,i=1rqi106\prod_{i=1}^rp_i≤10^6,\prod_{i=1}^rq_i≤10^6