求出 1 ∼ N 1\sim N 1∼N中有多少个无序数对 ( a , b ) (a,b) (a,b)的 g c d ( a , b ) = a x o r b 。 gcd(a,b)=a\ xor\ b。 gcd(a,b)=a xor b。
设 c = g c d ( a , b ) = a x o r b c=gcd(a,b)=a\ xor\ b c=gcd(a,b)=a xor b ∵ a x o r b = c \because a\ xor\ b=c ∵a xor b=c ∴ a x o r c = b \therefore a\ xor\ c=b ∴a xor c=b ∴ g c d ( a , a x o r c ) = g c d ( a , b ) = a x o r b = c \therefore gcd(a,a\ xor\ c)=gcd(a,b)=a\ xor\ b=c ∴gcd(a,a xor c)=gcd(a,b)=a xor b=c ∵ g c d ( a , b ) ≤ a − b , a x o r b ≥ a − b \because gcd(a,b)\leq a-b,a\ xor\ b\geq a-b ∵gcd(a,b)≤a−b,a xor b≥a−b ∴ c = a − b \therefore c=a-b ∴c=a−b ∴ b = a − c \therefore b=a-c ∴b=a−c ∴ g c d ( a , a − c ) = g c d ( a , b ) = c \therefore gcd(a,a-c)=gcd(a,b)=c ∴gcd(a,a−c)=gcd(a,b)=c ∵ g c d ( a , a x o r c ) = c \because gcd(a, a\ xor\ c)=c ∵gcd(a,a xor c)=c ∴ a x o r c = a − c \therefore a\ xor\ c=a-c ∴a xor c=a−c 由设中我们知道 c c c为 a a a的约数,所以枚举 c c c再找出它的倍数 a a a。