AtCoder:ABC081B - Shift only
はじめに
Pythonの勉強がてらAtCoderをやっているが、正解にはたどり着くものの処理時間の時間切れになってしまう問題が発生する。私のコーディング力ではこれが限界なので、そのような回答をここに載せる・
問題文
黒板に N 個の正の整数 A 1 , . . . , A N が書かれています.
すぬけ君は,黒板に書かれている整数がすべて偶数であるとき,次の操作を行うことができます.
黒板に書かれている整数すべてを, 2 で割ったものに置き換える. すぬけ君は最大で何回操作を行うことができるかを求めてください.
制約 1 ≤ N ≤ 200 1 ≤ A i ≤ 10 9
TLEとなった解答
x = list(map(int, input().split())) n = x[0] a = x[1:] # リスト内全て偶数ならTrue、奇数入ってたらFalse def check(l): comp = [] for i in l: if i % 2 == 0: comp.append(0) elif i % 2 != 0: comp.append(1) if sum(comp) == 0: return(True) elif sum(comp) != 0: return(False) # リストの全ての要素を2で割り算 できない場合はそのまま def cndcut(l): comp = [] ans = 0 while check(l) == True: l = list(map(lambda x: x / 2, l)) ans += 1 return(ans) print(cndcut(a))