mod 4 とかいうスマートな解法があるらしい。
unsigned int ならループを回しても間に合うとか間に合わないとか。
lli f(lli n) { lli sum = (n + 1LL) / 2LL % 2; for (lli i = 0; i < 63; ++i) { if (n < (1LL << i)) break; lli a = 1LL << i; lli m = (n + 1LL) % a; if ((n + 1LL) / a % 2 == 0) continue; if (m % 2LL) sum |= a; } return sum; } class EllysXors { public: long long getXor(long long L, long long R) { return f(R) ^ f(L - 1); } };