传送门:https://codeforces.ml/problemset/problem/235/E
题意
$$求解\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^cd(i\cdot j\cdot k)$$
思路
前置技能:$d(i\cdot j)=\sum_{xi}\sum_{yj}[gcd(x,y)=1]$
$$\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^cd(i\cdot j\cdot k)$$
$$\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^c\sum_{xi}\sum_{yj}\sum_{zk}[gcd(i,j)=1][gcd(i,k)=1][gcd(j,k)=1]$$
改变枚举顺序:
$$\sum_{x=1}^a\sum_{y=1}^b\sum_{z=1}^c\left \lfloor \frac{a}{x} \right \rfloor \left \lfloor \frac{b}{y} \right \rfloor \left \lfloor \frac{c}{z} \right \rfloor [gcd(x,y)=1][gcd(x,z)=1][gcd(y,z)=1]$$
x,y,z看得不习惯,还是换成i,j,k吧。
$$\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^c\left \lfloor \frac{a}{i} \right \rfloor \left \lfloor \frac{b}{j} \right \rfloor \left \lfloor \frac{c}{k} \right \rfloor [gcd(i,j)=1][gcd(i,k)=1][gcd(j,k)=1]$$
$$\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^c\left \lfloor \frac{a}{i} \right \rfloor \left \lfloor \frac{b}{j} \right \rfloor \left \lfloor \frac{c}{k} \right \rfloor[gcd(i,j)=1][gcd(i,k)=1]\sum_{dj\;dk}\mu(d)$$
枚举d:
$$\sum_{i=1}^a\left \lfloor \frac{a}{i} \right \rfloor\sum_{d=1}^{min(b,c)}\mu(d)\sum_{j=1}^{\left \lfloor \frac{b}{d} \right \rfloor}\left \lfloor \frac{b}{jd} \right \rfloor[gcd(i,jd)=1]\sum_{k=1}^{\left \lfloor \frac{c}{d} \right \rfloor} \left \lfloor \frac{c}{kd} \right \rfloor[gcd(i,kd)=1]$$
枚举i和d,先使gcd(i,d)=1,在枚举j,使gcd(i,j)=1,即可使gcd(i,jd)=1 k部分同理。
在计算gcd的过程中,用f[][]记忆化gcd,会有很大的优化。
Code(622MS)
1 |
|
本文作者:jujimeizuo
本文地址: https://blog.jujimeizuo.cn/2020/12/18/codeforces-235e/
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0 协议。转载请注明出处!