1 Problem
题意:给定 n ( n ≤ 1 0 18 ) n(n\leq10^{18}) n(n≤1018),求 n n n唯一分解中质因数幂次最小值吗, T T T个询问 ( T ≤ 5 ⋅ 1 0 4 ) (T\leq5\cdot10^4) (T≤5⋅104)(是不是很简洁呀)
2 Solve
2.1 50 10分
T ≤ 1 0 3 T\leq10^3 T≤103, n ≤ 1 0 3 n\leq10^3 n≤103
对每个询问,从 2 2 2到 s q r t ( n ) sqrt(n) sqrt(n)枚举 i i i,对每个 i i i
while(n%i==0){n/=i;cnt++;}
if(cnt) ans = min(ans,cnt)
;
然而实测能过 n ≤ 1 0 18 n\leq10^{18} n≤1018(雾)
(不知道是不是数据太水了)
2.2 30分
T ≤ 1 0 3 , n ≤ 1 0 9 T\leq10^3,n\leq10^9 T≤103,n≤109
同上,加个素数筛
然而得分还没有直接枚举高
数组开不下是真的伤
2.3 正解(玄学)
(证明附在解法后,和我一样一脸懵逼的可以跳过)
先处理出 1 0 18 5 \sqrt[5]{10^{18}} 51018以内的素数(只有 不到600个)
对每个询问 n n n,
先暴力除掉这些素数,同时记录 m i n _ p o w min\_pow min_pow
然后对除掉这些素数后的 n n n,依次判断:
如果 n n n为 k 4 k^4 k4, a n s = m i n ( a n s , 4 ) ans=min(ans,4) ans=