题解 | #计算几何#

计算几何

https://ac.nowcoder.com/acm/contest/11173/B

找规律。
0: 00000(偶数个)
1: 00001(奇数个)
2: 00010(奇数个)
3: 00011(偶数个)

4: 00100(奇数个)
5: 00101(偶数个)
6: 00110(偶数个)
7: 00111(奇数个)

8: 01000(奇数个)
9: 01001(偶数个)
10:01010(偶数个)
11:01011(奇数个)
每四个数里面都包含两个满足条件的。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int solve(int x){
    int res = 0;
    while(x){
        if(x&1)    res++;
        x>>=1;
    }
    if(res&1)
    return 1;
    else
    return 0;
}
signed main(){
    std::ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int t;
    cin>>t;
    while(t--){
        int l, r;
        cin>>l>>r;
        if((r-l+1)<=4){
            int ans = 0;
            for(int i = l; i <= r; i++){
                ans += solve(i);
            }
            cout<<ans<<endl;
            continue;
        }
        int x = l/4*4+3;
        int res = (r-x)/4;
        if(res*4==r-x)    res--;
        res *= 2;
        for(int i = l; i <= x; i++){
            res += solve(i);
        }
        for(int i = r/4*4; i <= r; i++){
            res += solve(i);
        }
        cout<<res<<endl;
    }
    return 0;
}
全部评论

相关推荐

码农索隆:7*24,随时待命,这是去🇷🇺打仗去了啊
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务