解题报告 分解因式

1.        题目

分解因式

factorize.pas/c/cpp

 

【问题描述】

众所周知,整系数范围内分解因式是一个非常难的问题。为了解决这个问题,人们想出了各种公式和方法,例如平方差公式、立方差公式、立方和公式、提取公因式、十字相乘法等等。现在“伟大”的只会空想的不切实际的伪数学爱好者小k同学希望能借助计算机解决这个问题。

为了让自己的题目显得不那么丧心病狂一点,小k同学决定只要你解决一类特殊的因式分解问题,那就是分解在整系数范围内分解到不能继续分解为止。换句话说,最后的答案中每个因式不含更低次数的因式。

不过小k后来意识到这个问题还是很丧心病狂,为了降低题目难度,小k给出一个提示:一个多项式是另一个多项式的因式当且仅当ab的一个约数。

 

【输入格式】

输入一行一个数n,待分解的多项式就是

 

【输出格式】

输出一行一个字符串,表示因式分解的结果。最后的输出中每个因式应该不含空格,系数为1-1时应省略1,系数为0的项应该省略,每个因式应该降幂排列,并且保证首项系数为正。除此以外,我们要求按如下顺序排列因式:优先输出次数低的因式,对于次数相同的因式,依次比较每个因式的系数,从高指数项到低指数项,且包括被省略即系数为0的项。系数首先比较绝对值,其次比较符号。绝对值小的系数字典序序小,绝对值相同时比较符号,负号字典序比正号小。字典序越小的因式应该排在越前面输出。

 

【样例输入】

factorize.in

20

 

【样例输出】

factorize.out

(x - 1) (x + 1) (x^2 + 1) (x^4 – x^3 + x^2 - x + 1) (x^4 + x^3 + x^2 + x + 1) (x^8 – x^6 + x^4 – x^2 + 1)

 

【数据规模和约定】

对于40%的数据,;2<=n<=50

对于100%的数据,.2<=n<=1200

 

2.        题目实质

我们是不是该提醒一下出题人,我们是学 OI 的,不是学 MO 的。

3.        算法

x^n-1  =  (x-1)(x^(n-1)+x^(n-2)+x^(n-3)...+x+1)

------本公式转载自“考研论坛”

首先,将给出的式子,先按照 2 次的拆分方法拆到不能拆,再按照 3 次的拆分方法拆到不能拆,然后再套上面那个公式。

4.        注意事项

能分出 2 次, 3 次的,要先分出来。

原文地址:https://www.cnblogs.com/SueMiller/p/2213019.html