Description
Solution
暴力打表找规律
Code
inline int bit(ll x) {
int num = 0;
while(x) {
num++;
x/=2;
}return num;
}
ll solve(ll N,ll x) {
ll tmp = x;
if(x > N) return N;
if(N == 1) return 1;
if(x%2==0){return x-1;}
x = (x + 1) / 2;
ll num1 = bit(N), m1 = N - (1ll*1<<(num1-1)) + 1;
ll num2 = bit(x-1), m2 = x;
if(num1<=num2) return tmp-1;
ll res = num1 - num2 + tmp - 1;
if(m2>m1) res--;
return res;
}
int main(int argc, char const *argv[])
{
int T;scanf("%d",&T);int cas = 0;
while(T--) {
ll x,L,N;scanf("%lld %lld %lld",&x,&L,&N);
ll fz = solve(N,x) - solve(L-1,x);
ll fm = N - L + 1;
ll g = __gcd(fz,fm);
printf("Case %d: ", ++cas);
if(fz == 0) printf("0/1\n");
else printf("%lld/%lld\n",fz/g, fm/g);
}
return 0;
}