版权声明:虽然是个蒟蒻但是转载还是要说一声的哟 https://blog.csdn.net/jpwang8/article/details/83507327
Description
求
i=1∑nj=1∑n[gcd(i,j)=i⊕j]
其中那个符号是按位异或
n<=1e6
Solution
我们钦定
a>b
首先证明
gcd(a,b)≤a−b
gcd(a,b)=gcd(b,a−b)≤a−b,由辗转相减可知等式成立,且a和b的约数不大于min(a,b)
然后有
a⊕b≥a−b
我们把
a中是0且
b中是1的位置交换,记为
a′和
b′
有
a′⊕b′=a′−b′=a⊕b
然后就可以发现
a⊕b=a′−b′≥a−b是成立的
综合一下看可以发现
gcd(a,b)=a⊕b=a−b
令
c=a−b,有
gcd(a,b)=gcd(b,a−b)=a⊕b
然后套c进去有
gcd(b,c)=c,于是我们枚举c,枚举c的倍数就可以nlogn做了
Code
口胡题解不写代码