AtCoder ~ Shift only

開発

問題

方針

Shift onlyというタイトルなのでシフト演算を使って解くのが出題の意図とは思われるが、問題文に書かれている通りに愚直に計算する方式で解いてみました。

リスト内の数値が全て偶数だったら全ての値を2で割るのを繰り返してリスト内に奇数が現れたら終了とします。

回答例

# 入力値を取得
n = input()
a = list(map(int, input().split()))

# 何回操作したかを記録する
ans = 0

def isEvenAll(arr) -> bool:
  """ リスト内の全ての値が偶数かを判定する
  
  Args:
  	arr :
    	判定したい数値のリスト
  
  Returns:
  	bool:
    	arrの数値が全て偶数の時にTrue
  """
  return all(i % 2 == 0 for i in arr)

while isEvenAll(a):
     a = [i/2 for i in a] # aリスト内の値を全て2で割る
     ans += 1

# 回答を表示する
print(ans)

参考

組み込み関数 allについてはこちらを参照。全ての要素がTrueかどうかを判定することができます。

リスト内包表記についてはこちらを参照。

コメント

タイトルとURLをコピーしました