GCD XOR UVA

来源:互联网 发布:怎样制作app软件 编辑:程序博客网 时间:2024/06/07 07:08
//#pragma comment(linker, "/STACK:1024000000,1024000000") //#include<bits/stdc++.h>#include<stdio.h>#include<algorithm>#include<queue>#include<string.h>#include<iostream>#include<math.h>#include<set>#include<map>#include<vector>#include<iomanip>using namespace std;#define ll long long#define pb push_back#define FOR(a) for(int i=1;i<=a;i++)const double PI = acos(-1.0);const int maxn=3e7+7;int C[maxn];void init(){for(int c=1;c<=maxn/2;c++){//c作为因子枚举倍数afor(int a=c+c;a<=maxn;a+=c){int b=a-c;if(c==(a^b))C[a]++;}}for(int i=2;i<=maxn;i++){C[i]+=C[i-1];}}int main(){int T,kase=0;init();scanf("%d",&T);while(T--){int n;scanf("%d",&n);printf("Case %d: %d\n",++kase,C[n]);}}

贡献相关,最近做到不少了

gcd(a,b)=c && a^b==c 必然有c==a-b

这种规律对于我,在比赛的时候只能靠打表才发现,不会笔算不要紧。。