Project Euler Problem 33
該当する場合は、
分子の1の位の数と、分母の10の位の数が同じで、
それを除去する場合のみであるが、
なぜそうなのかは、分からない。
from fractions import Fraction def is_digit_cancelling(nu, de): nu_10, nu_1 = divmod(nu, 10) de_10, de_1 = divmod(de, 10) if de_1 == 0: return False if nu_1 == de_1: if Fraction(nu, de) == Fraction(nu_10, de_10): return True if nu_1 == de_10: if Fraction(nu, de) == Fraction(nu_10, de_1): return True if nu_10 == de_1: if Fraction(nu, de) == Fraction(nu_1, de_10): return True if nu_10 == de_10: if Fraction(nu, de) == Fraction(nu_1, de_1): return True return False answer = 1 for numerator in range(10, 99): for denominator in range(numerator + 1, 100): if is_digit_cancelling(numerator, denominator): answer *= Fraction(numerator, denominator) print(answer.denominator)