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), 可以接受.

 

代码实现:

View Code
posted @ 2012-02-25 00:59  zcwwzdjn  阅读(365)  评论(0编辑  收藏  举报