暑假集训 ---- Min25 专题

9.29 重学 min25
f i , j f_{i,j} fi,j 表示已经筛去前 j 个素数的倍数后 ≤ i \le i i 的数的 k 次幂之和
f i , j = ∑ x = 2 i x k [ M i n ( x ) > p j ∣ x ∈ P ] f_{i,j}=\sum_{x=2}^i x^k[Min(x)>p_j|x\in P] fi,j=x=2ixk[Min(x)>pjxP]
转移: f i , j = f i , j − 1 − p j k ( f i p j , j − 1 − ∑ l = 1 j − 1 p l k ) f_{i,j}=f_{i,j-1}-p_j^k(f_{\frac{i}{p_j},j-1}-\sum_{l=1}^{j-1}p_l^k) fi,j=fi,j1pjk(fpji,j1l=1j1plk)
s i = ∑ l = 1 i p l k s_i=\sum_{l=1}^i p_l^k si=l=1iplk
解释一下后面减掉的
即减去在只考虑 j-1 个质数的情况下被看做质数的东西
这些数需要满足:1.只考虑了 j-1个质数 2. 乘上 p j p_j pj ≤ i \le i i
于是这些数可以表示为 f i p j , j − 1 f_{\frac{i}{p_j},j-1} fpji,j1
但是同时除去了质数的贡献,所以要剪掉
这样以来我们已经可以处理一些问题了,比如说 ≤ n \le n n的质数个数(0次幂),质数和 (1次幂)
然后我们需要把合数的贡献加回去
g i , j g_{i,j} gi,j表示 2 – i 所有 M i n ( x ) > = p r i m ( j ) Min(x) >= prim(j) Min(x)>=prim(j) 的和
g ( i , j ) = ∑ x = 2 i f ( x ) [ ( x ∈ P ) o r ( M i n ( x ) > = p j ) ] g(i,j)=\sum_{x=2}^if(x)[(x\in P)or(Min(x)>=p_j)] g(i,j)=x=2if(x)[(xP)or(Min(x)>=pj)]
递推分为两部分考虑,一是大于等于 p j p_j pj 的质数,一是合数
质数的贡献我们已经知道,现在考虑如何加上合数的贡献,自己枚举合数的最小质因子与次数
∑ f ( p i e ∗ x ) = f ( p i e ) ∑ f ( x ) ( x ∗ p i e < = n , M i n ( x ) > p i ) \sum f(p_i^e*x)= f(p_i^e)\sum f (x)(x*p_i^e<=n,Min(x)>p_i) f(piex)=f(pie)f(x)(xpie<=n,Min(x)>pi)
于是有 g n , i = f n , c n t − s i − 1 + ∑ e = 1 , k > i p i e < = n f ( p i e ) g ( n p e i , k ) + ∑ e = 2 p i e < = n f ( p i e ) g_{n, i}=f_{n,cnt}-s_{i-1}+\sum_{e=1,k>i}^{p_i^{e}<=n}f(p_i^e)g(\frac{n}{p_e^i}, k)+\sum_{e=2}^{p_i^e<=n}f(p_i^e) gn,i=fn,cntsi1+e=1,k>ipie<=nf(pie)g(pein,k)+e=2pie<=nf(pie)
后面一坨是因为没有考虑一个质数的次方的贡献


最大真因数
a n s = ∑ x M i n ( x ) ans=\sum \frac{x}{Min(x)} ans=Min(x)x
考虑 M i n ( x ) Min(x) Min(x)的贡献,即为 min25 时的 f n p x , x − 1 − ∑ l = 1 x − 1 p l f_{\frac{n}{p_x},x-1}-\sum_{l=1}^{x-1}p_l fpxn,x1l=1x1pl
简单的函数
f ( p ) = p − 1 , f ( p e ) = p ( x o r ) e f(p)=p-1, f(p^e)=p(xor)e f(p)=p1,f(pe)=p(xor)e,特殊考虑 2 的影响就是板子了
Misaka Network 与求和
a n s = ∑ d = 1 n f ( d ) k ∑ i = 1 n ∑ j = 1 n [ ( i , j ) = d ] = ∑ d = 1 n f ( d ) k ( 2 ∗ ∑ i = 1 n / d φ ( i ) − 1 ) = ∑ d = 1 n f ( d ) k g ( n / d ) ans=\sum_{d=1}^n f(d)^k\sum_{i=1}^{n}\sum_{j=1}^n [(i,j)=d]=\sum_{d=1}^nf(d)^k(2*\sum_{i=1}^{n/d}\varphi(i)-1)=\sum_{d=1}^nf(d)^kg(n/d) ans=d=1nf(d)ki=1nj=1n[(i,j)=d]=d=1nf(d)k(2i=1n/dφ(i)1)=d=1nf(d)kg(n/d)

首先 g 可以整除分块,然后杜教筛处理 g
考虑如何用 Min25 筛出 f,一个 d 有 f ( d ) k f(d) ^ k f(d)k 的贡献,当且仅当有一个 >= 它的质数在它前面
所有的方案数就是 >= 它的质数个数
于是 Min25 先处理出质数个数,然后加上合数贡献时算一下 f ( d ) f(d) f(d)
具体一点就是 S ( n , i ) = ∑ j = i t o t ∑ e = 1 p j e + 1 < = n S ( n / p j e , j + 1 ) + p j k ∗ ∑ i = p j n / p j e [ i ∈ P ] S(n, i)=\sum_{j=i}^{tot} \sum_{e=1}^{p_j^{e+1}<=n}S(n/p_j^e, j+1)+p_j^k*\sum_{i=p_j}^{n/p_j^e}[i\in P] S(n,i)=j=itote=1pje+1<=nS(n/pje,j+1)+pjki=pjn/pje[iP]
a n s = S ( n , 1 ) ans=S(n,1) ans=S(n,1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值