Description
求1 XOR 2,XOR,...,XOR N 的值。
A XOR B 即A,B 按位异或。
Input
1 个整数N。
Output
1 个整数,表示所求的值。
Sample Input
3
Sample Output
0
Hint
对于50% 的数据,1<=N<=10^6;
对于100% 的数据,1<=N<=10^18。
【分析】
结论题。
暴力打出前100项,稍微观察便能发现规律。至于证明。。。不会
【代码】
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
long long N;
void _init()
{
scanf("%I64d",&N);
}
void _solve()
{
long long t;
t=N%4;
switch(t)
{
case 1:
printf("1\n");
break;
case 2:
printf("%I64d\n",N+1);
break;
case 3:
printf("0\n");
break;
default:
printf("%I64d\n",N);
}
}
int main()
{
_init();
_solve();
return 0;
}