LoginSignup
2
1

More than 5 years have passed since last update.

Project Euler 33「桁消去分数」

Last updated at Posted at 2018-02-19

Problem 33 「桁消去分数」

49/98は面白い分数である.「分子と分母からそれぞれ9を取り除くと, 49/98 = 4/8 となり, 簡単な形にすることができる」と経験の浅い数学者が誤って思い込んでしまうかもしれないからである. (方法は正しくないが,49/98の場合にはたまたま正しい約分になってしまう.)
我々は 30/50 = 3/5 のようなタイプは自明な例だとする.
このような分数のうち, 1より小さく分子・分母がともに2桁の数になるような自明でないものは, 4個ある.
その4個の分数の積が約分された形で与えられたとき, 分母の値を答えよ.

def hoge():
    numer, denom = 1, 1
    _duplicate = lambda a, b: set(list(str(a))) & set(list(str(b)))
    _replace = lambda a, b: float(str(a).replace(str(b), '', 1))
    for a in range(11, 100):
        if a % 10 == 0: continue
        for b in range(a+1, 100):
            if b % 10 == 0: continue
            duplicate_num = _duplicate(a, b)
            for n in duplicate_num:
                if float(a) / b == _replace(a, n) / _replace(b, n):
                    numer, denom = numer * a, denom * b
    return denom // gcd(numer, denom)

def gcd(a, b): # 最大公約数取得
    while b:
        a, b = b, a%b
    return a

print(hoge())
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1