0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Ruby] AtCoder 過去問 B - 200th ABC-200

Posted at

##はじめに
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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?