終了判定 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
を出力すれば解くことができます。