正题
题目大意
求
∑a=1n∑b=1a(gcd(a,b)==axorb)\sum_{a=1}^n\sum_{b=1}^a(gcd(a,b)==a\ xor\ b)a=1∑nb=1∑a(gcd(a,b)==a xor b)
解题思路
因为a==ba==ba==b时肯定不成立,所以直接计算a>ba>ba>b
那么gcd(a,b)⩽a−bgcd(a,b)\leqslant a-bgcd(a,b)⩽a−b,axorb⩾a−ba\ xor\ b\geqslant a-ba xor b⩾a−b
我们设c=a−bc=a-bc=a−b,然后枚举一个ccc和一个iii,a=c∗ia=c*ia=c∗i,因为gcd(a,a−c)=cgcd(a,a-c)=cgcd(a,a−c)=c,所以只需要判断a−c=axorca-c=a\ xor\ ca−c=a xor c就好了
code
#include<cstdio>
using namespace std;
int n,s;
int main()
{scanf("%d",&n);for(int i=1;i<=n/2;i++)for(int j=i*2;j<=n;j+=i)if((i^j)==j-i) s++;printf("%d",s);
}