【競プロ典型90問】「020 - Log Inequality(★3)」解法
Free-PhotosによるPixabayからの画像

このシリーズではE869120さんによって作成された競プロ典型90問をPythonで解いています。

問題

020 - Log Inequality(★3)

ポイント

問題文の通りに比較しようとすると、以下のようなコードを思いつくかもしれません。

import math
if math.log2(a) < b * math.log2(c):
    print('Yes')
else:
    print('No')

しかし、これではWAとなってしまいます。PCは2進数で計算を行うため、上記コードだと誤差が大きくなってしまうからです。

これを回避するためには対数の比較を、整数の比較に変換します。

log2a < blog2c という比較演算は a < c ** b と同義です。

コード

def main():
    import sys
    sys.setrecursionlimit(10 ** 9)
    input = sys.stdin.readline

    a, b, c = map(int, input().split(" "))

    if a < c ** b:
        print('Yes')
    else:
        print('No')


if __name__ == '__main__':
    main()

おすすめの記事