给定一个数字n,如样例所示格式输出满足1<=b<=a<=n且gcd(a,b)==a xor b的(a,b)二元组个数
#include<iostream> #include<vector> #include<cmath> #include<algorithm> using namespace std; const int N=3e7+4; int n; int A[N]; void init(int top){ int i,j ; for(i=1;i<=top;i++) for(j=i*2;j<=top;j+=i){ int y=j-i; if((j^y)==i) A[j]++; } } int main(){ init(3e7); int x,i,tes,cas=0; scanf("%d",&tes); for(i=2;i<=3e7;i++) A[i]+=A[i-1]; while(tes--){ scanf("%d",&x); printf("Case %d: %d\n",++cas,A[x]); } }