※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。
詳しくはコチラ
なるべくわかりやすい解説を付けました
問題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