前提・実現したいこと
AtCoder 068 B Break numberを解いていました。
問題:
高橋君は 2で割れる数が好きです。
正整数 Nが与えられるので、1以上 N 以下の整数のうち、最も 2で割れる回数が多いものを求めてください。
答えは必ず 1 つに定まります。なお、2で割っていき、何回あまりが出ずに割れるかを、2で割れる回数と呼ぶことにします。
例えば
6 ならば、6-> 3で、1 回 2 で割れます。
8 ならば、8 -> 4 -> 2 -> 1で、3 回 2 で割れます。
3 ならば、0 回 2 で割れます。
制約 1≦N≦100
入力例 4 100
出力例 4 64
Python
1N = int(input()) 2count = 0 3 4while N > 1: 5 N = (N/2) 6 count += 1 7 print(count) 8print(2**count)
割り算をしているとき、N = (N/2)
の部分で、N = int(N/2)
と、int
をつけずに計算すると出力例4を試したとき64ではなく、128が出力されてしまいます。
正解が出たソースコード
Python
1N = int(input()) 2count = 0 3 4while N > 1: 5 N = int(N/2) 6 count += 1 7 print(count) 8print(2**count)
試したこと
count を出力し、出てくるcount値
の違いを見たのですが、何故そうなってくるのか今ひとつわかりませんでした。
int
1100 21 32 43 54 65 76 8ans: 64
noint
1100 21 32 43 54 65 76 87 9ans: 128
回答2件
あなたの回答
tips
プレビュー