原题链接:https://vjudge.net/problem/UVA-12716
分类:数学技巧
备注:思维题
#include<bits/stdc++.h>
using namespace std;
const int maxn=30000005;
int t,n,sum[maxn],kase;
int main(void){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
for(int c=1;c<maxn;++c)//gcd(a,b)=a^b=c
for(int a=(c<<1);a<maxn;a+=c)//b=a^c
if((a^c)==a-c)++sum[a];
for(int i=1;i<maxn;++i)sum[i]+=sum[i-1];
scanf("%d",&t);
while(t--){
scanf("%d",&n);
printf("Case %d: %d\n",++kase,sum[n]);
}
return 0;
}