#include<bits/stdc++.h>
using namespace std;
#define ll long long
int t;
ll gcd(ll a, ll b) { return b==0?a :gcd(b, a%b) ; }
ll x, l, n;
ll func(ll s) {
ll ans = 0;
if (x % 2 == 0) return 0;
for (ll i = 1; i <= s; i *= 2) {
ll up = min(2 * i - 1, s);//上界
ll down = i;//下界
ll num = up - down + 1;//数量
if (x <= 2 * num - 1) ans++;//判断
}
return ans;
}
int main() {
scanf("%d", &t);
for (int cas = 1; cas <= t; cas++) {
scanf("%I64d%I64d%I64d", &x, &l, &n);
ll ret = func(n) - func(l - 1);
if (x > l) ret += x - l;
ll all = n - l + 1;
ll zz = gcd(all, ret);
printf("Case %d: %I64d/%I64d\n", cas, ret / zz, all / zz);
}
return 0;
}
BACS2018 A: A Criminal二阶约瑟夫环
猜你喜欢
转载自blog.csdn.net/qq_37765455/article/details/81781518
今日推荐
周排行