GCD XOR

1.

题目

dalao标准证明

复杂度分析

 

2.

本题也利用了枚举正确的比判断正确还是错误要快的方法险过

#include<iostream>
#include<cstdio>
using namespace std;
const int N = 3e7;
int ans[N+1];
void solve()
{
    for(int c = 1; c <= N/2; c++)
    {
        for(int a = 2*c; a <= N; a += c)
        {
            if((a^c) == (a-c))
            {
                ans[a]++;
            }
        }
    }
    for(int i = 1; i <= N; i++) ans[i] += ans[i-1];
}
int main()
{
    int t;
    scanf("%d", &t);
    solve();
    for(int i = 1; i <= t; i++)
    {
        cout <<i<<endl;
        int n;
        scanf("%d", &n);
        printf("Case %d: %d\n", i, ans[n]);
    }
}
/*
2
7
20000000
*/
AC Code

 

posted @ 2021-03-12 16:42  bear_xin  阅读(58)  评论(0)    收藏  举报