The Big Race
思路
题目就是求在([1, n])之间的数,分别对,w, b取模,最后同余的概率。
显然能够得到在一个(lcm(w, b))内,其出现的同余的数一定是(min(w, b))个,并且分别以
(lcm(a, b) + 1, lcm(a, b) + 2 …… lcm(a, b) + min(a, b) - 1,加上lcm(a, b) + lacm(a, b))。
接着在剩下的余数部分就是,(min(t \% lcm(a, b), a - 1, b - 1))。
这道题就显然会做了,但是(wa on test 11),原因就是(long long)溢出了,然后我打开了(pycharm),写了一套交一发,然后就(AC)了
代码
def gcd(a, b):
if(b == 0):
return int(a)
else:
return int(gcd(b, a % b))
def lcm(a, b):
return int(a * b // gcd(a, b))
if __name__ == "__main__":
t, w, b = map(int, input().split())
ans = t // lcm(w, b) * min(w, b)
ans += min(t % lcm(w, b), w - 1, b - 1)
print(ans // gcd(ans, t), end = "")
print("/", end = "")
print(t // gcd(ans, t))