2020 Ateneo de Manila University DISCS PrO HS Division

打这场的时候处于玄学状态,这 sb 题竟然搞了一个多小时

传送门

提供一个和题解不同的方法


【题意】

若给定正整数 (n) ,可以将其所有因数累乘,得到 (m)

现给定 (m) ,问是否存在该 (n)

(mleq 10^{15})


【分析】

(displaystyle n=prod_i p_i^{k_i}) 的因数个数为 (displaystyle oldsymbol d(n)=prod_i (1+k_i))

(displaystyle m=prod_i (prod_{j=1}^{k_i} p_i^j)^{prod_{j eq i}(1+k_j)}=prod_i (p_i^{k_i(k_i+1)over 2})^{oldsymbol d(n)over k_i+1}=(prod_i p_i^{k_i})^{oldsymbol d(n)over 2}=n^{oldsymbol d(n)over 2})

(m^2=n^{oldsymbol d(n)})

现在进行分类讨论:

(oldsymbol d(n)geq 5) 时,由于 (mleq 10^{15}) ,故 (nleq m^{2over 5}leq 10^{15cdot {2over 5}}=10^6)

因此,我们可以先枚举倍数,用 (O(nlog n)) 的时间对 (nleq 10^6) 的数字进行打表,之后暴力查表,查找是否存在 (n^{oldsymbol d(n)}=m^2)

(oldsymbol d(n)=1)(n=1) 得出 (m=1),直接验证

(oldsymbol d(n)=2)(nin Prime) 得出 (m=n)(O(sqrt m)) 验证

(oldsymbol d(n)=3)(n=p^2, pin PrimeRightarrow m^2=n^3=p^6Rightarrow m=p^3)

(p=m^{1over 3}leq 10^5) ,暴力枚举 (O(m^{1over 3})) 验证

(oldsymbol d(n)=4)(m^2=n^4 o n=sqrt m) ,先验证 (sqrt m) 是否为整数;之后根据 (d(n)=4) 得出 (n=p^3wedge n=pq, p eq qwedge p,q in Prime)

由于 (n=sqrt mleq 10^{7.5}) ,故直接 (O(sqrt n)) 枚举最小质因数 (i)

(n=i^3) 则得出答案;否则判定是否 (n=i^2) 而不满足题意;最后 (O(sqrt n)) check ({nover i}) 是否为质数

原文地址:https://www.cnblogs.com/JustinRochester/p/14757682.html