[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\)

容易知道,在同样的次数和的情况下,这种情况乘积最小,更大就无法成为答案。

所以我们爆搜所有位置的次数,统计以下就好了

posted @ 2023-03-11 18:40  Aurora_Borealis  阅读(20)  评论(0编辑  收藏  举报