考えて競プロする

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

ABC068-B - Break Number を解く

ABC068-B - Break Number

 

整数Nが与えられるので、1以上N以下の整数のうち

最も2で割れる回数が多いものを求める問題

 

制約が 1 <= N <= 100 なので

1つ1つ確認していっても十分に間に合うだろう

 

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

 

提出したコード

# 入力
N=int(input())

# 最大回数
c=0

# 最大回数時の整数(初期値は0回である1とする)
a=1

for x in range(1,N+1):
  _c=0
  _x=x
  while True:
    if _x%2==0:
      _x//=2
      _c+=1
    else:
      if c<_c:
        c=_c
        a=x
      break

# 出力
print(a)

 

提出結果はACでした

 

とてもシンプルで分かりやすい解説は一読の価値あり

是非下記リンクからご確認ください