AtCoder Beginner Contest 097 B問題
競技プログラミングで使える関数を実際の問題を通して紹介いたします。
今回は「pow()」です。
べき乗の計算
「pow(x, a)」を使ってべき乗(x^a)を求めることが出来ます。
例えば、以下の通り(2の3乗を計算しております)。
入力値(X)以下となる、べき乗数の内、最大の値を出力せよ。という問題。
条件:
x = int(input()) m = 1 for i in range(1, 32): for j in range(2, 10): p = pow(i, j) if p > x: break if p > m: m = p print(m)
コードの解説をします。
1000のルートが31.~なので32の範囲でその値の2乗〜10乗までを計算。
10乗でやめてしまうのは、なので最大でも10乗までもしくは9乗までだからです。
コードの改善
競技プログラミングではプログラムの処理完了までの速度も重要な要素の一つですので、より短く簡潔なコードを書くことが重要です。
X = int(input()) r = 1 for b in range(2,X+1): p = 2 while b**p<=X: if r<b**p: r = b**p p = p + 1 print(r)
X+1とすることで汎用化しています。
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る