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))
posted @ 2020-05-07 15:13  lifehappiness  阅读(98)  评论(0编辑  收藏  举报