因为异或结果等于 0 只有一种情况,就是两个数相等,所以只要算出两个区间的交集有多少个数,再除以两个区间所有组合的总数,就是答案。
void solve(){
ll a,b,c,d;
while(cin>>a>>b>>c>>d){
ll l=max(a,c),r=min(b,d);
ll cnt=max(0LL,r-l+1);
ll den=(b-a+1)*(d-c+1);
if(cnt==0){
cout<<"0/1"<<endl;
}else{
ll g=gcd(cnt,den);
cout<<cnt/g<<"/"<<den/g<<endl;
}
}
}

京公网安备 11010502036488号