知道当i为偶数时,i ^ ( i + 1 ) ==1;这一条性质即可解决;
那么只要统计当n是奇数还是偶数时匹配的满足条件的对数;
当n为奇数时,那么除1 外,之后的有( n - 1 )/ 2个1取反;
当n为偶数时,除了1和n外,其余也均可组成满足性质的数(n - 2 ) /2个;
最后由于1 ^ 1 == 0 ; 1 ^ 0 == 1;
求出结果即可;
// File Name: 4309.cpp
// Author: bo_jwolf
// Created Time: 2013年12月03日 星期二 17:42:29
#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>
using namespace std;
typedef long long LL;
int main(){
LL n, sum, temp;
sum = 1;
while( cin >> n ){
//sum ^= n;
//cout << sum << endl;
sum = 1;
if( n % 2 == 0 ){
temp = ( n - 2 ) / 2;
sum = 1 ^ ( temp % 2 ) ^ n;
}
else{
temp = ( n - 1 ) / 2;
sum = 1 ^ ( temp % 2 );
}
// cout << temp << endl << endl;
cout << sum << endl;
/* cout << "aaaaaaaaaaaaa" << endl;
sum = 1;
for( int i = 2; i <= n; ++i ){
sum ^= i;
}
cout << sum << endl << endl;*/
}
return 0;
}