パナソニックコン2020 C - Sqrt Inequality
問題原文
問題要旨
か?
解法
絵に書いたような地獄絵図を生んだ問題。反省のために書く。
基本的にはやるだけだけど、テストケースがほぼ完璧に誤差を潰してくる。
なので、式変形して根号の部分をつぶしていく。
まず、入力が必ず正の整数なので、二乗しても大小関係は変わらない。
から、両辺二乗して、
を得て、左辺移項して、
を得る。 この時点で が0以下なら答えはNo。
さらに両辺二乗して、
となって、これでようやく根号が消えた。
実装
a, b, c = map(int, input().split()) if c - a - b <= 0: print('No') elif 4 * a * b < (c - a - b) ** 2: print('Yes') else: print('No')
感想
Writerはりんごさんだったんですが、あまりに簡潔なのに罠が多い問題なので、生きてる次元が違うのかと思いました。