SRM543 Div1
Easy(93.96/250)
数字の後ろにLLつけ忘れて、時間がかかりすぎてしまいました。
難しそうでも、mod 4 で分類する解法の方が良かったみたいです。
typedef long long ll; class EllysXors{ public: ll getXor(ll L, ll R) { ll ans = 0; ll a = (R-L)%4; if(L%2){ if(a==0||a==1)ans=1; }else{ if(a==1||a==2)ans=1; } for(ll i = 1LL; i < 50LL; i++){ ll t = 1LL<<i; ll l = L%(t<<1LL); ll r = R%(t<<1LL); ll a = l-t>=0LL?l-t:0LL; ll b = r-t>=0LL?r-t+1LL:0LL; ans |= ((a+b)&1LL)<<i; } return ans; } };
Score 93.96
Rating 1281 -> 1272