終了判定 2

#お題

2 以上の整数N, Kが与えられます。
「Nを 2 倍した数でNを更新する」という操作を何度か繰り返すことを考えます。
このとき, ちょうどある回数 M で N の値は K 以上になります。この時点で操作の繰り返しを終了することにします。

この繰り返しの回数Mを求めてください。(Mは 0 でも構いません)

例えば、Nを 2 、Kを 18 とします。
上記の操作を 3 回繰り返すと、N = 16 となります。
4 回くりかえすと、N = 32 となり、N >= K が成立します。ここで操作を終了し、最終的な操作の回数Mは 4 となります。

 

 


#入力

N K

 

 

 


#出力

答えとなる数値Sを 1 行で出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。

S

 

 

 


#コード

a,b = [int(x) for x in input().split()]

w = 0

while a < b:
    a *= 2
    w += 1

print(w)

 

 

 


#参考

n, k = [int(x) for x in input().split()]

m = 0
while n < k:
    n *= 2
    m += 1

print(m)

  • 終了条件が明確に分かっているときに while 文は便利です。
  • 今回の終了条件は n >= k となるときです。
  • つまり、while 文の条件式は n < k です。
  • while 文の処理ブロック内で以下の 2 つの処理を行います。
    • n を 2 倍にする
    • m を +1 する
  • 最後に m を出力すれば解くことができます。