Description
求∑i=1n∑j=1n[gcd(i,j)=i⊕j]\sum_{i=1}^n \sum_{j=1}^n [gcd(i,j)=i \oplus j]i=1∑nj=1∑n[gcd(i,j)=i⊕j]
其中那个符号是按位异或
n<=1e6
Solution
我们钦定a>ba>ba>b
首先证明gcd(a,b)≤a−bgcd(a,b)\leq a-bgcd(a,b)≤a−b
gcd(a,b)=gcd(b,a−b)≤a−bgcd(a,b)=gcd(b,a-b)\leq a-bgcd(a,b)=gcd(b,a−b)≤a−b,由辗转相减可知等式成立,且a和b的约数不大于min(a,b)
然后有a⊕b≥a−ba\oplus b\geq a-ba⊕b≥a−b
我们把aaa中是0且bbb中是1的位置交换,记为a′a'a′和b′b'b′
有a′⊕b′=a′−b′=a⊕ba'\oplus b'=a'-b'=a\oplus ba′⊕b′=a′−b′=a⊕b
然后就可以发现a⊕b=a′−b′≥a−ba\oplus b=a'-b'\geq a-ba⊕b=a′−b′≥a−b是成立的
综合一下看可以发现gcd(a,b)=a⊕b=a−bgcd(a,b)=a\oplus b=a-bgcd(a,b)=a⊕b=a−b
令c=a−bc=a-bc=a−b,有gcd(a,b)=gcd(b,a−b)=a⊕bgcd(a,b)=gcd(b,a-b)=a\oplus bgcd(a,b)=gcd(b,a−b)=a⊕b
然后套c进去有gcd(b,c)=cgcd(b,c)=cgcd(b,c)=c,于是我们枚举c,枚举c的倍数就可以nlogn做了
Code
口胡题解不写代码