coding笔记: acwing 1295 X的因子链
Acwing 1295 X的因子链
Content
输入正整数 X,求 X的大于 1的因子组成的满足任意前一项都能整除后一项的严格递增序列的最大长度,以及满足最大长度的序列的个数。
Input
输入包含多组数据,每组数据占一行,包含一个正整数表示 X
Output
对于每组数据,输出序列的最大长度以及满足最大长度的序列的个数。
Solution
算术基本定理
$X = p_1^{a_1}p_2^{a_2}…*p_k^{a_k}$
每個大於1的自然數,要麼本身就是質數,要麼可以寫為2個或以上的質數的積
显然,满足要求的序列最大长度为
X的所有质因子的排列数
有重复的数该怎么求呢?(以$2^23^35$为例)
- 假设所有数互不相同,那么总共排列有6!个
- 把一样的排列归到一族里去,每一族里的元素有多少个呢?2!*3!个
- 那么一共有
个不同的组
推广:
- 总排列数=$\frac{(a_1+a_2+…+a_k)!}{a_1!a_2!…*a_k!}$(多重集合的排列数问题)
分解质因数
组数比较大,直接分解可能会超时
可以预求出每个数的最小质因子(筛法求素数),分解时分别求N的质因子P,N/P的质因子,以此类推。因此是logN的复杂度
筛法求素数
- 求出1~n中的所有质数,以及每一个数的一个最小质因子
1 | // 线性筛法:O(N) |
Code
1 |
|
- Post title:coding笔记: acwing 1295 X的因子链
- Post author:sixwalter
- Create time:2023-08-05 11:14:26
- Post link:https://coelien.github.io/2023/08/05/coding-solution/acwing_1295/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
Comments