#LS1194. 【提高】因式分解

【提高】因式分解

【提高】因式分解

大家都学过因式分解,而我们今天要用编程的方法来解决问题!!

已知一个 nn 次多项式:

F(x)=i=0naixiF(x)=\sum_{i=0}^{n}a_ix^i

其中 aia_i 都是整数,且 an=1a_n=1a00a_0 \neq 0

你需要对多项式 F(x)F(x) 找到 mm 对整数 (bi,ci)(b_i, c_i) 满足:

F(x)=i=1m(x+bi)ciF(x)=\prod_{i=1}^{m}(x+b_i)^{c_i}

其中 bib_i 互不相同输入保证存在答案

多项式 F(x)F(x) 将按照非 00 项从高次到低次输入给你,你也需要将分解后的多项式按照 bib_i 从小到大输出,且需要将相同的因式用指数形式描述。

对于输入

  • 如果 ai>0a_i > 0,这一项的输入应该为 +aixi+a_ix^i
  • 如果 ai=0a_i=0 则没有输入
  • 如果 ai<0a_i < 0,这一项为 aixi-|a_i|x^i

特别地,如果 i=1i=1,输入中的 ^i 会被省略。对于最高次项,会直接输入 xnx_n 不会输入额外的系数,其他项如果系数为 ±1\pm1 可以省略 11

例如 x3x+1x^3-x+1 的输入为 x^3-x+1

对于输出

  • 如果 bi<0b_i < 0,这一项的输出应该为 (xbi)(x-|b_i|)
  • 如果 bi0b_i \le 0,这一项为 (x+bi)(x+b_i)
  • 如果 ci>1c_i > 1 时,你需要再在后面输出 ^ci,
  • 如果 ci=1c_i=1 则不需要输出 cic_i
  • 在每两个因式之间,你不需要输出乘号分隔

输入格式

输入一行,代表给定的多项式。

输出格式

输出一行,代表分解后的多项式。

x^3+3x^2+3x+1
(x+1)^3
x^3+2x^2-5x-6
(x-2)(x+1)(x+3)
x+5
(x+5)

提示

【样例 1 解释】

【样例 3 解释】

  • 即使只有 1 项,也不要省略括号

【数据范围】

所有输入都是整数 1n20a0109 1\le n \le 20, |a_0| \le 10^9, 保证有解。

测试点编号 nn \leq 特殊性质
11 n1n \leq 1
232\sim3 n2n \leq 2
454\sim5 n3n \leq 3
66 n10n \leq 10 m=1m=1
77 a05×103 |a_0| \leq 5 \times 10^3
88 n20n \leq 20 a0=±1a_0=\pm1
99 a0>0a_0>0
1010
请思考后再点击查看提示

来源