2020牛客寒假算法基础集训营6 E-立方数 - 质因子分解

题目链接:https://ac.nowcoder.com/acm/contest/3007/E
题目大意:
在这里插入图片描述
在这里插入图片描述
我们要求最大的A。
我们根据唯一分解定理:
N = e 1 p 1 e 2 p 2 e 2 p 2 e 2 p 2 . . . e k p k N=e_1^{p_1}*e_2^{p_2}*e_2^{p_2}*e_2^{p_2}*...e_k^{p_k}
那么
p i % 3 = = 0 A = e i ( p i / 3 ) 如果pi\%3==0那么A*=e_i*(pi/3)
现在我们就是要 e i A 枚举ei来得到A
我们发现 e i N 1 / 3 ei的最大值为N^{1/3}
我们枚举 N 1 / 3 O ( T N ( 1 / 3 ) / l n ( N ( 1 / 3 ) ) ) N^{1/3}里的素数那么复杂度是O(TN^{(1/3)}/ln(N^{(1/3)}))
我们可以进一步优化: N 1 / 4 , N N 1 / 4 X 如果枚举到N^{1/4},那么我们把N在N^{1/4}里的素数全部筛出后得到X
X e p B , e , B > N 1 / 4 p < 4 p > = 4 e p B > N 那么X的形式为e^{p}*B,并且e, B>N^{1/4},那么可以知道:p<4。如果p>=4那么e^{p}*B>N
1 : p = 3 B 1 N 3 / 4 B , B > N 1 / 4 N 3 / 4 B > N , B = 1 2 : p < 3 e i \begin{array}{l} 1:p=3那么B一定等于1 证明N^{3/4}*B,而且B>N^{1/4}那么N^{3/4}*B>N不可能,所以B=1 \\ \\ 2:p<3那么ei对结果没有贡献 \\ \end{array}
N 1 / 4 : O ( T N ( 1 / 4 ) / l n ( N ( 1 / 4 ) ) ) 所以我们枚举N^{1/4}的素数,复杂度:O(TN^{(1/4)}/ln(N^{(1/4)}))

在这里插入代码片
发布了403 篇原创文章 · 获赞 23 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_21433411/article/details/104357188