给定一个数字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]);
}
}
浙公网安备 33010602011771号