Particle

競技プログラミングについての雑記

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