週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

べき乗の計算(pow)(AtCoder(競プロ)1日1問【6日目】【Python】)


AtCoder Beginner Contest 097 B問題

競技プログラミングで使える関数を実際の問題を通して紹介いたします。

今回は「pow()」です。

 

 べき乗の計算

「pow(x, a)」を使ってべき乗(x^a)を求めることが出来ます。

例えば、以下の通り(2の3乗を計算しております)。

f:id:aisakakun:20180818143621p:plain

 

入力値(X)以下となる、べき乗数の内、最大の値を出力せよ。という問題。

条件:
1\leqq X \leqq 1000

 
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乗でやめてしまうのは、1000^{1/10}=1.99なので最大でも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言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで