#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=3e7+10;
int f[maxn];
ll gcd(ll a,ll b){
if(b>a) swap(a,b);
return b==0?a:gcd(b,a%b);
}
void init(){
for(ll c=1;c<maxn/2;c++){
for(ll a=2*c;a<maxn;a+=c){
/*
if(gcd(a,(a^c))==c)
f[a]++;
// 复杂度O(nlog(n)^2)超时
// O(nlog(n))AC就很难受
*/
ll b=a-c;
if((a^b)==c){
f[a]++;
}
}
}
for(int i=1;i<maxn;i++){
f[i]=f[i-1]+f[i];
}
}
int main(){
init();
int T,kase=1;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
printf("Case %d: %d\n",kase++,f[n]);
}
return 0;
}
GCD XOR UVA - 12716 (筛数字,找规律)
最新推荐文章于 2021-08-07 16:28:44 发布