区间异或和

计算l,l+1,l+2,...r的异或和

输入格式:
输入包括两个整数1≤l,r≤图片说明
*​​ *

输出格式:
输出题目描述中的整数

输入样例:
3 6
输出样例:
4

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll sum(ll n)//[1,n]的区间异或
{
    if(n%4==0)return n;
    else if(n%4==1)return 1;
    else if(n%4==2)return n+1;
    else if(n%4==3)return 0;
    else return 0;

}
int main()
{
     ll l,r;
    cin>>l>>r;
    ll ans=sum(r)^sum(l-1);//[1,r]区间异或^[1,l-1]的区间异或等于[l,r]的区间异或
    cout<<ans<<endl;
    return 0;
}

参考文章:https://zhuanlan.zhihu.com/p/139949012

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务