异或
题目大意
求1到n的两个数i,j的gcd满足 g c d ( i , j ) = i j gcd(i,j)=i^j gcd(i,j)=ij,求有多少个
输入
一个数n
输出
一个数,代表多少个
输入样例
12
输出样例
8
解题思路
其实这道题就是一道推理题,具体推理过程请看LYF大佬的blog
程序如下
#include<cstdio>
using namespace std;
int n,ans;
int main(){
freopen("gcdxor.in","r",stdin);
freopen("gcdxor.out","w",stdout);
scanf("%d",&n);
for(int c=1;c<=n/2;++c)
for(int a=c*2;a<=n;a+=c)
if(c==(a^(a-c)))ans++;
printf("%d",ans);
}