问题
对于正整数 (n) ,定义 (f(n)) 为 (n) 所含质因子的最大幂指数
即对于 (n=p_1^{c_1}p_2^{c_2}dots p_k^{c_k}) ,(f(n)=max limits{c_i})
求
((n,mle 10^7) , (tle 10^4) 组数据)
解析
直接按套路化简
现在我们只要预处理出 (g(n)=sumlimits_{dmid n}mu(d)f(frac{n}{d})) 的前缀和就可以了
对于 (n,mle 10^7) 的数据来说,埃氏筛的时间复杂度过高,要使用线性筛
可是 (g) 似乎并非积性函数,也无法使用卷积,无法快速求解,怎么办?
观察 (g) ,发现 (mu) 和 (f) 似乎都和质因数的指数有关,我们从此方向思考
对于 (d=p_1^{dc_1}p_2^{dc_2}dots p_k^{dc_k}), 我们发现 (mu(d)) 在 (max limits{dc_i}ge 2) 的情况下值为 (0),不予考虑( (c) 前的 (d) 仅为标识符,无实际意义)
因此对于 (dmid n) 来说,(dc_iin{0,1}),所以 (f(frac{n}{d})) 的取值只有可能是 (f(n)) 或 (f(n-1)) (因为 (frac{n}{d}) 最多只会除掉质因子的一次幂,所以说最大幂指数最多只会减一)
现在我们又设 (frac{n}{d}=p_1^{frac{n}{d}c_1}p_2^{frac{n}{d}c_2}dots p_{n-k}^{frac{n}{d}c_{x}}dots p_n^{frac{n}{d}c_k}),且 (frac{n}{d}c_i (x+1le ile n)) 为最大幂指数,那么 (dc_i) 在 (1le ile x) 的取值定然不会影响 (f(frac{n}{d})) 的取值
我们发现,(dc_i) 在 (1le ile x) 的取值一共有 (2^{x}) 种(每个位置只能取零和一),而 (mu(d)) 的取值为一和负一的情况(即质因子种类数量为奇数和偶数的情况)刚好相等,各有又因为前面的取值不影响 (f(frac{n}{d})) ,所以说最终取值一定会两两抵消, (g(n)=0)
也就是说,若 (n) 的幂指数的取值不全部相等,(g(n)=0)
若 (n) 的幂指数的取值全部相等,即 (n=p_1^{c}p_2^{c}dots p_k^{c}) ,则 (dc_i) 的取值一共有 (2^{k}) 种,而 (mu(d)) 的取值为一和负一的情况也相等,正常来讲 (g(n)) 的取值应该也是零,但是当 (dc_i=1(1le ile k)) 时,(f(frac{n}{d})) 的取值比其他的小,为 (f(n)-1) ,因此要减去此时 (mu(d)=mu(p_1^1p_2^1dots p_k^1)) 的值
也就是说,若 (n) 的幂指数的取值全部相等,即 (n)等于某个正整数的次方, (g(n)=-mu(p_1p_2dots p_k))
综上,若 (n=p_1^{c}p_2^{c}dots p_k^{c}) 时, (g(n)=-mu(p_1p_2dots p_k)),否则 (g(n)=0)
这样,我们枚举 (i) ,令 (g(i^c)=-mu(i)) ,其他 (g(n)=0) 即可(注意特判 (n=1) 的情况)
核心代码
for(int i=2;i<=N;i++){
if(mu[i]=0)continue;
for(long long j=i;j<=N;j*=i){
g[j]=-mu[i];
}
}