典型90【020 – Log Inequality(★3)】をpython解説

Python

AtCoder の問題を解くために必要な実力を付けるために作られた「典型問題」を解いていく企画として、「典型90」があります。

今回は、その内、の20問目である「020 – Log Inequality(★3)」を解説していきたいと思います。
なにか、間違っているところなどありましたら、@EitaSugiまで、ご指導ご鞭撻の程、よろしくお願い致します!

問題名 【020 – Log Inequality(★3)】

020 – Log Inequality(★3)

考察

aの値が大きすぎて、普通に計算するのは厳しいです。また、logやrootは計算過程で誤差が発生するので、比較するのが難しいです。
なので、このままの状態では、2つの数字を比較することは難しいです。

ではどうするか??

誤差が発生しない(発生しづらい)整数に変換して比較する

logの場合、2つの数の大小関係は

ex) log(a) と b×log(c) の大小関係
→a ,c^bの大小関係と等しくなる。

よって、この性質を使って問題をときます。

コード

import sys
def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def II(): return int(sys.stdin.readline())
def MI(): return map(int,sys.stdin.readline().rstrip().split())
def S(): return sys.stdin.readline().rstrip()
readline = sys.stdin.readline
sys.setrecursionlimit(10 ** 6)


a,b,c = MI()
if a < c**b:
    print("Yes")
else:
    print("No")

まとめ

前の問題【018 – Statue of Chokudai(★3)】
次の問題【021 – Come Back in One Piece(★5)】

コメント

タイトルとURLをコピーしました