HDU 3205 Factorization
题目大意:
把x ^ n - 1分解因式, n不超过1001.
简要分析:
因式分解似乎是很难的问题, 不过这道题有特殊性. 首先每个式子的分解式中比含(x - 1), 剩下n项恰好是x的0至n - 1次幂, 这里能分组提公因式, 分的组数恰好是n的约数,这样就可以继续下去. 所以最后的答案中总能拼凑得到形如x ^ m - 1的因式, 其中m是n的约数, 那么哪个因式是x ^ n - 1所独有的呢? 我们令这个式子为P(n), 那么有
P(1) = x - 1
P(n) = (x ^ n - 1) / P(m1) / P(m2) / P(m3) / ... / P(mk), 其中m1, m2, m3, ..., mk为n的约数(当然不等于n), 于是最后的答案便是P(m1)P(m2)P(m3)...P(mk)P(n).
由于n的约数个数是O(sqrt(n))的, 所以整式除法的次数大概也是O(sqrt(n))的, 做一次整式除法复杂度为O(n ^ 2), 所以复杂度大概是O(n ^ 2.5), 可以接受.
代码实现:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)