考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC097-B - Exponential を解く

ABC097-B - Exponential

 

正整数 X 以下のべき乗数を求める問題

べき乗数とは b^p( 1 <= b , 2 <= p )で表せる数を指す

 

制約内で考えられるべき乗数を全列挙して、最大のものを出力する

という方針で解くことにする

 

べき乗数を列挙するとき、1のべき乗のパターンは別に考えておかないと

無限ループの恐れがあるので注意する(1は何乗しても1なので)

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
X=int(input())

# 最大値(1のべき乗数で初期化)
mx=1

# 2〜1000
for a in range(2,1000):

  i=2
  while True:
    # べき乗
    b=pow(a,i)

    # X以下の場合、最大値保存
    if b<=X:
      mx=max(mx,b)
    else:
      # Xをオーバーした場合はループを抜ける
      break

    i+=1

# 最大値を出力
print(mx)

 

提出結果はACでした