[POI2001][HAOI2007] 反素数 题解
前置知识:一些关于约数的小常识。
- 唯一分解定理
对于所有正整数 \(n\),一定有唯一分解方式 \(n=p_1^{c_1}p_2^{c_2} \cdots p_m^{c_m}\),其中 \(p_1 < p_2 < \cdots <p_m\),且都为质数,所有 \(c_i\) 均为正整数。
这是数论中十分基本的一个定理,由此可以衍生出若干结论。
假设我们有一个正整数 \(n\),则:
\(n\) 的正约数个数为 \((c_1+1)(c_2+2) \cdots (c_m+m)\)。
每个 \(p_i\) 的次数有 \(0\) 到 \(c_i\) 的可能取值,共有 \(c_i+1\) 种,乘法原理即可。
\(n\) 的正约数的和为 \(\prod\limits_{i=1}^m (\sum\limits_{j=0}^{c_i}p_i^j)\)。
相当于一个全排列(?),类似 dfs 的枚举思想。
知道了这些,这题就比较好做了。
首先,最大的反质数一定是约数最多的那个数,如果有相同值则是位置靠前的,原因显然。
其次,根据数据范围以及一点经验可以知道,\(2 \times 3 \times 5 \times 7 \times 11 \times 13 \times 17 \times 19 \times 23 \times 29 \times 31 > 2 \times 10^9\),所以可知:\(n\) 的质因数分解不可能有大于十个质因子。,又因为 \(2^{31}> 2 \times 10^9\),所以次数最高为 \(30\)。
最后,若 \(n\) 为反质数,则 \(c_1 \geq c_2 \geq \cdot \geq c_m\)。
容易知道,在同样的次数和的情况下,这种情况乘积最小,更大就无法成为答案。
所以我们爆搜所有位置的次数,统计以下就好了
本文来自博客园,作者:Aurora_Borealis,转载请注明原文链接:https://www.cnblogs.com/Aurora-Borealis-Not-Found/p/17206684.html