根据先人总结的 gcd 反演题套路,设 f(x)=n∑i=1m∑j=1[gcd(i,j)=x],F(x)=∑x|if(i)=⌊nx⌋⌊mx⌋。
那么题目变成了询问 ∑p∈Pf(p),其中 P 表示全体正素数构成的集合。
∑p∈Pf(p)=∑p∈P∑p|iμ(ip)F(i)=min(n,m)∑i=1∑p|i,p∈Pμ(ip)⌊ni⌋⌊mi⌋
然后预处理 sumi=i∑j=1∑p|j,p∈Pμ(jp),对于后面那个东西数论分块即可。
代码:
1 |
|
根据先人总结的 gcd 反演题套路,设 f(x)=n∑i=1m∑j=1[gcd(i,j)=x],F(x)=∑x|if(i)=⌊nx⌋⌊mx⌋。
那么题目变成了询问 ∑p∈Pf(p),其中 P 表示全体正素数构成的集合。
∑p∈Pf(p)=∑p∈P∑p|iμ(ip)F(i)=min(n,m)∑i=1∑p|i,p∈Pμ(ip)⌊ni⌋⌊mi⌋
然后预处理 sumi=i∑j=1∑p|j,p∈Pμ(jp),对于后面那个东西数论分块即可。
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment