素直にこの通りに解きましたが
これだと、掛け算がオーバーフローしてエラーになる可能性があるそうです。
たしかにそれもそうか。
log2だと天文学的な数値になるとか学生の時に聞いたことがあるし。
N = int(input())
sum = 1
for i in range(1,N+1):
sum *= i
cnt = 0
while sum > 0:
if sum % 2 != 0:
break
sum //= 2
cnt += 1
print(cnt)
で、再度見てみると。
たとえば4だとすると
1 * 2 * 3 * 4 は 24で、2で割り切れるのは3回。
要素ごとに2で割れるか調べてみると
1 * 2 * 3 * (2 * 2)
こうなります。2が3個あるので、3回割れることになる。
これを応用すれば良さそうです。
N = int(input())
ans = 0
for i in range(1, N + 1):
now = i
#今調べてる数を2で割り切れるまで続ける
while now % 2 == 0:
now //= 2
ans += 1
print(ans)