Uva12716 GCD XOR 乱搞

版权声明:虽然是个蒟蒻但是转载还是要说一声的哟 https://blog.csdn.net/jpwang8/article/details/83507327

Description


i = 1 n j = 1 n [ g c d ( i , j ) = i j ] \sum_{i=1}^n \sum_{j=1}^n [gcd(i,j)=i \oplus j]
其中那个符号是按位异或
n<=1e6

Solution


我们钦定 a &gt; b a&gt;b
首先证明 g c d ( a , b ) a b gcd(a,b)\leq a-b
g c d ( a , b ) = g c d ( b , a b ) a b gcd(a,b)=gcd(b,a-b)\leq a-b ,由辗转相减可知等式成立,且a和b的约数不大于min(a,b)

然后有 a b a b a\oplus b\geq a-b
我们把 a a 中是0且 b b 中是1的位置交换,记为 a a&#x27; b b&#x27;
a b = a b = a b a&#x27;\oplus b&#x27;=a&#x27;-b&#x27;=a\oplus b
然后就可以发现 a b = a b a b a\oplus b=a&#x27;-b&#x27;\geq a-b 是成立的

综合一下看可以发现 g c d ( a , b ) = a b = a b gcd(a,b)=a\oplus b=a-b
c = a b c=a-b ,有 g c d ( a , b ) = g c d ( b , a b ) = a b gcd(a,b)=gcd(b,a-b)=a\oplus b
然后套c进去有 g c d ( b , c ) = c gcd(b,c)=c ,于是我们枚举c,枚举c的倍数就可以nlogn做了

Code


口胡题解不写代码

猜你喜欢

转载自blog.csdn.net/jpwang8/article/details/83507327
今日推荐