HDU - 5661

/*H E A D*/
int main(){
	int T=read();
	while(T--){
		ll a=read();
		ll b=read();
		ll c=read();
		ll d=read();
		ll ans=0;
		ll x=0,y=0;
		rrep(i,61,0){
			bool pos1=(a>>i)&1;
			bool pos2=(b>>i)&1;
			bool pos3=(c>>i)&1;
			bool pos4=(d>>i)&1;
			if(pos1==pos2&&pos3==pos4){
				if(pos1^pos3){
					ans+=(1ll<<i);
				}
			}else if(pos1^pos2&&pos3==pos4){
				ans+=(1ll<<i);
				if(pos3) b=(1ll<<i)-1;//note
				else a=0;
			}else if(pos1==pos2&&pos3^pos4){
				ans+=(1ll<<i);
				if(pos1) d=(1ll<<i)-1;
				else c=0;
			}else{
				ans+=(1ll<<i+1)-1;
				break;
			}
		}
		println(ans);
	}
	return 0;
}
posted @ 2018-02-07 23:57  Caturra  阅读(122)  评论(0)    收藏  举报