見出し画像

AtCoder Beginner Contest 205を振り返る C問題

C - POW

問題

3つの整数a, b, cが与えられるので、aのc乗とbのc乗でどちらが大きいかを出す問題。

制約

-10**9 <= a, b <= 10**9
1 <= c <= 10**9

所感

兎に角数が大きいです。ABCで累乗の計算が出てくるときには素直にやると計算量が多すぎてTLE(時間切れ)になるので、やっちゃダメです。

今回のケースだと累乗の指数が共通(c)なので基本的には底を比較すればOKです。唯一気を付けるのは指数が偶数の場合で、その場合は絶対値で比較が必要です。

作成したコード

a, b, c = map(int, input().split())
if c%2 == 0:
   a, b = a**2, b**2

if a < b:
   print("<")
elif a > b:
   print('>')
else:
   print('=')

指数が偶数の場合に2乗して代入した辺りが個人的にはやったった感を感じた箇所です。

a, b = abs(a), abs(b)

でもいいんですが、文字数がちょっとだけ少なくて済みました。

次回は解けなかったD問題を解説観ながら解いてみたいところ。

この記事が気に入ったらサポートをしてみませんか?