[白俊]JavaScript 10250 ACMホテル


Question


[白俊]JavaScript 10250 ACMホテル

input


プログラムは標準入力から入力データを受信する.プログラムの入力はT個のテストデータからなり,Tは入力の第1行に与えられる.各テストデータは1行としてH、W、N、3つの整数を含み、それぞれホテルの階数、各階の部屋数、何人目の客(1≦H、W≦99、1≦N≦H)を表す.× W).

output


プログラムは標準出力に出力されます.各テストデータは、N番目のお客様に割り当てる部屋番号を正確に印刷します.

example

2
6 12 10
30 50 72
402
1203

Solution

console.log(require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').splice(1).map(e=>{
    const [h,w,n]=e.split(' ');
    const floor=n%h; 
    const room=String(Math.ceil(n/h)).padStart(2,'0');
    return `${floor!==0?floor:h}${room}`
}).join('\n'));

What I learned


最初に湖を表現した時、1番=>01番、12番=>12番で、このように表現するために湖水に0.01を乗じて小数とし、小数部だけを取るように接近します.
const room=String(((Math.ceil(n/h))*0.01).toFixed(2)).split('.')[1];
しかしこの問題のように、必要な桁数によって、場合によっては文字を増やす方法がよく使われていますが、毎回このように乗じて割るのが一番の方法なので、もう一度検索してみると、とても役に立つ文字列の方法が見つかりました.padStartとpadEndです.

str.padStart(targetLength,[,padString])


padStart()メソッドは、現在の文字列の先頭を別の文字列で埋め、所定の長さを満たす新しい文字列を返します.入力は、ターゲット文字列の先頭(左側)から適用されます.
  • targetLength:ターゲット文字列の長さ.現在の文字列の長さより小さい場合は、入力されていない値が返されます.
  • padString:現在の文字列に入力する他の文字列.文字列がターゲット文字列の長さを超えて長すぎる場合は、左側の部分を切り取って挿入します.既定値は「」です.
  • 'abc'.padStart(10);         // "       abc"
    'abc'.padStart(10, "foo");  // "foofoofabc"
    'abc'.padStart(6,"123465"); // "123abc"
    'abc'.padStart(8, "0");     // "00000abc"
    'abc'.padStart(1);          // "abc"

    str.padEnd(targetLength,[,padString])


    padStartと同様に、padEndの違いは、ターゲット文字列の右側(終了)から塗りつぶしを開始することです.