题目分析:找出最小的值c使(a^c)&(b^c)最大。

代码:

#include <stdio.h>
#include <algorithm>
using namespace std;
int main(){
	long long a, b;
	int t;
	scanf("%d", &t);
	while(t--){
		scanf("%lld%lld", &a, &b);
		if((a&b)==0)
			printf("%lld\n", min(a, b));
		else
			printf("%lld\n", a&b);		
	}
	return 0;
} 

待验证:

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
/*
(A^C)&(B^C)=(A&B)^C
(A&B)如果与C相等时则为0,不相等时则为1. 
*/
int main(){
	long long t,flag;
	long long a,b;
	cin>>t;
	while(t--){
		cin>>a>>b;
		flag=a&b;
		//cout<<flag<<endl;
		/*for(int i=1;i<=flag+10;i++){
			int x=flag ^ i;
			cout<<"flag="<<flag<<",c="<<i<<",res="<<x<<endl;
		}*/
		if(flag!=0) cout<<flag<<endl;
		else cout<<1<<endl;
	} 
}