Code: Select all
#include<bits/stdc++.h>
using namespace std;
#define PI acos(-1.0)
#define ll long long
#define mem(a) memset(a,0,sizeof(a));
#define M 10000007
vector< ll>vt;
vector< ll>qt;
ll bitcount( ll n){
ll i,j=n,cnt=0;
while(j!=0){
cnt++;
j/=2;
}
return cnt;
}
void pop(ll n,ll m){
ll i=n,j=m,k,l;
vt.clear();
qt.clear();
while(i!=0){
k=i%2;
vt.push_back(k);
i/=2;
}
while(j!=0){
k=j%2;
qt.push_back(k);
j/=2;
}
}
int main()
{
ll i,j,k,l,n,m,tcase,count=1,chk1,chk2,lk,mk,chkk1;
vector<ll>ct,dt;
bool chkk2;
scanf("%lld",&tcase);
while(tcase--){
lk=0;mk=0;
chkk1=0;
scanf("%lld%lld",&n,&m);
chk1=bitcount(n);
chk2=bitcount(m);
if(chk1!=chk2){
ll pp=0,qq=pow(2,chk2)-1;
printf("Case %lld: %lld %lld\n",count++,qq,pp);
}
else{
pop(n,m);
//cout<<"Poped"<<endl;
for(i=vt.size()-1;i>=0;i--){
if(qt[i]==vt[i]&&(chkk1==0)){
ct.push_back(qt[i]);
dt.push_back(qt[i]);
}
else if(qt[i]!=vt[i]&&(chkk1==0)){
ct.push_back(qt[i]);
dt.push_back(0);
chkk1++;
}
else{
ct.push_back(1);
dt.push_back(0);
chkk1++;
}
}
for(i=vt.size()-1,j=0;i>=0;i--,j++){
lk+=ct[i]*pow(2,j);
mk+=dt[i]*pow(2,j);
}
printf("Case %lld: %lld %lld\n",count++,lk,mk);
}
ct.clear();
dt.clear();
}
return 0;
}