The Big Race(py写的)

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))
原文地址:https://www.cnblogs.com/lifehappiness/p/12843227.html