嫌いではないが、星3という気はしない。

solution

数学。$O(1)$。

求めるのは、$\frac{1}{T_1} t \equiv \frac{1}{T_2} t \equiv \frac{1}{T_3} t \pmod 1$となるような最小の有理数$t \gt 0$。 ここから$2$項に注目して、$(\frac{1}{T_1} - \frac{1}{T_2}) t \equiv 0 \pmod 1$とすれば、$t = a \frac{1}{\frac{1}{T_1} - \frac{1}{T_2}}$ ただし $a \in \mathbb{N}^{+}$。 同様にして合わせると、$t = a \frac{1}{\frac{1}{T_1} - \frac{1}{T_2}} = b \frac{1}{\frac{1}{T_2} - \frac{1}{T_3}}$。

これは有理数の最小公倍数のような形になっており、計算することができる。 有理数$\frac{p_1}{q_1}, \frac{p_2}{q_2}$の最小公倍数$\operatorname{lcm}(\frac{p_1}{q_1}, \frac{p_2}{q_2}) = r = \frac{p_1}{q_1} a = \frac{p_2}{q_2} b$ for certain $a, b \in \mathbb{N}^{+}$。 $q_1 q_2 r = p_1 q_2 a = p_2 q_1 b = \operatorname{lcm}(p_1 q_2, p_2 q_1)$。 よって$\operatorname{lcm}(\frac{p_1}{q_1}, \frac{p_2}{q_2}) = r = \frac{\operatorname{lcm}(p_1 q_2, p_2 q_1)}{q_1 q_2}$。

implementation

#!/usr/bin/env python3
import math
from fractions import Fraction
def lcm(a, b):
    return a * b // math.gcd(a, b)
def qlcm(p, q):
    a = p.numerator * q.denominator
    b = p.denominator * q.numerator
    c = p.denominator * q.denominator
    return Fraction(lcm(a, b), c)
a = Fraction(input())
b = Fraction(input())
c = Fraction(input())
p = 1 / (1/a - 1/b)
q = 1 / (1/b - 1/c)
t = qlcm(p, q)
print('{}/{}'.format(t.numerator, t.denominator))