##はじめに
AtCoderのB問題 200th ABC-200を解いてみました。
他のやり方やもっと容量の良いやり方などあれば教えてください!
問題はこちらからご確認ください!
それではよろしくお願いします。
##B - 200th ABC-200
まず入力の受け取りです。
n, k = gets.split(' ').map(&:to_i)
まず、問題文にそって条件分岐をしていきます。
Nが200で割り切れたら(200の倍数であれば)、200で割ってNに代入します。
n, k = gets.split(' ').map(&:to_i)
if n % 200 == 0
n /= 200
続いて割り切れなかった場合、Nの後ろに200を付け足して、Nに代入します。
ここで注意したいのは、これは数値の計算ではないということです。ただ単にNの後ろにNを付け足すだけです。
例えばNが1だったら1200になるのです。
要するにこれは文字列の足し算と考えられます。
ですので、200の倍数でなかった時の処理では、まずはじめにNを文字列に変換します。
n = n.to_s
そしてNに文字列の200を足します。
n += "200"
そして最後に数値に戻してやります。
n = n.to_i
これでif文の完成です。
n, k = gets.split(' ').map(&:to_i)
if n % 200 == 0
n /= 200
else
n = n.to_s
n += "200"
n = n.to_i
end
この処理をK回繰り返すのでtimesメソッドを使って繰り返します。
n, k = gets.split(' ').map(&:to_i)
k.times do
if n % 200 == 0
n /= 200
else
n = n.to_s
n += "200"
n = n.to_i
end
end
puts n