日別アーカイブ: 2022年8月21日

paizaLvアップ問題と解答(標準出力21)Ruby

※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。

詳しくはコチラ

なるべくわかりやすい解説を付けました

問題4 数値を M けた半角スペース埋めで出力 (paizaランク D 相当)

自然数 N, M が与えられます。N が M けたになるよう数値の前に半角スペースを埋めて出力してください。

入力される値
N M

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
答えの数値を解答の形式に従った形で出力してください。

N

末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件
すべてのテストケースにおいて、以下の条件をみたします。

* N, Mは自然数
* N は 0 以上 999 以下
* M は 1 以上 10 以下
* (N のけた数) ≦ M
入力例1
813 4
出力例1
813
入力例2
813 8
出力例2
813

解答

#1行目の入力値(数値)を受け取る
n, m = gets.split.map(&:to_i)
#半角スペースで埋めてnをm桁まで表示する
puts("%#{m}d".%(n))

または

#1行目の入力値(数値)を受け取る
n, m = gets.split.map(&:to_i)
#半角スペースで埋めてnをm桁まで表示する
puts sprintf("%#{m}d".%(n))

FINAL問題【出力幅を指定して出力】N 個の数値を M けた半角スペース埋めで出力 (paizaランク D 相当)

自然数 N, M と N 個の自然数 A_1, A_2, …, A_N が与えられます。それぞれの数値が M けたになるよう数値の前に半角スペースを埋めて、改行区切りで出力してください。

入力される値
N M
A_1
A_2
A_3
...
A_N

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
答えの数値を解答の形式に従った形で出力してください。

A_1
A_2
A_3
...
A_N

末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件
すべてのテストケースにおいて、以下の条件をみたします。

* N, Mは自然数
* N は 1 以上 99 以下
* M は 1 以上 10 以下
* A_i は 0 以上 999 以下
* (A_i のけた数の最大値) ≦ M
入力例1
4 3
0
8
81
813
出力例1
0
8
81
813

解答

#1行目の入力値(数値)を受け取る
n, m = gets.split.map(&:to_i)

#n回繰り返す
n.times do |i|

#数値を受け取り変数に代入する
  number = gets.to_i

#↑のnumbersの数値を半角スペースで埋めてm桁まで表示する
  puts ("%#{m}d".%("#{number}"))
end

または

#1行目の入力値(数値)を受け取る
n, m = gets.split(' ').map(&:to_i)

#半角スペースで埋めて3桁まで表示する
n.times do |i|

#数値を受け取り変数に代入する 
  number = gets.to_i

#↑のnumbersの数値を半角スペースで埋めてm桁まで表示する 
  puts sprintf("%#{m}d".%("#{number}"))
end