AtCoder の問題を解くために必要な実力を付けるために作られた「典型問題」を解いていく企画として、「典型90」があります。
今回は、その内、の20問目である「020 – Log Inequality(★3)」を解説していきたいと思います。
なにか、間違っているところなどありましたら、@EitaSugiまで、ご指導ご鞭撻の程、よろしくお願い致します!
問題名 【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)】
コメント