题目描述
异或和
时间限制:1秒 内存限制:128M
题目描述
给出一个正整数n,输出[1,n]的异或和,即1xor2xor…xorn的结果。
输入描述
第一行一个正整数t(1≤t≤10.0e+5),代表有t组输入。
每组输入一个正整数n(1≤n≤10.0e+18)
输出描述
如题。
样例输入
3 1 2 5
样例输出
1 3 1
话不多说,上AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
long long n;
cin>>n;
if(n%4==3){
cout<<0<<endl;
}
else if(n%4==1){
cout<<1<<endl;
}
else{
if(n%4==0){
cout<<n<<endl;
}
else if(n%2==0){
cout<<n+1<<endl;
}
}
}
}
/*
1^2=01^10=11=3
3^3=0
0^4=000^100=100=4
4^5=100^101=001=1
1^6=001^110=111=7
7^7=111^111=0
0^8=0000^1000=1000=8
8^9=1000^1001=1
1^10=0001^1010=1011=11
*/