[10250]ACMホテル


[10250]ACMホテル


質問する


ACMホテルマネージャーの志宇さんはお客さんが着くと空き部屋を手配しています.お客様アンケートによると、ホテルの正門から最短距離の部屋まで歩くのが好きです.皆さんは智友を助けるプログラムを書きたいと思っています.つまり、アンケート調査の結果、ホテルの正門から徒歩距離が最も短い部屋への配布プログラムを作成します.
問題を簡略化するために、ホテルは矩形だと仮定します.各階にW部屋のH階建て(1≦H,W≦99)があると仮定する.次に、エレベータが一番左にあると仮定する(図1参照).こんな形のホテル.× W形態ホテルと呼ばれています.ホテルの正門は1階のエレベーターの正面にあり、正門からエレベーターまでの距離は無視されています.また、隣接するすべての2つの部屋の間の距離が同じ距離(距離1)であると仮定し、ホテルの正面にしか部屋がありません.

図1.H=6,W=12,H× Wホテルのサムネイル
部屋番号はYXXまたはYXX形式で、ここでYまたはYYはフロア数、XXはエレベーターから数えた番号を表します.すなわち、図1に斜線で示されている部屋は305号室である.
客はエレベーターで移動する距離を気にしない.歩く距離が同じだけで、階下の部屋のほうが好きです.例えば、102号室より301号室のほうが好きです.102号室は2キロ、301号室は1キロで行けますから.同じ理由で102番より2101番が好きです.
皆さんが作成するプログラムは、すべての部屋が空いていると仮定した場合、このポリシーに基づいてN番目のお客様に割り当てられた部屋番号を算出するプログラムです.1人目のお客様は101番、2人目のお客様は201番などを手配します.図1を例にとると、H=6で、10番目のお客様は402番に手配しなければならない.

入力


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

しゅつりょく


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

コード#コード#

#include <iostream>

using namespace std;

int main() {
    int T, H, W, N; // 입력으로 주어진 변수들
    int X, Y; // Y: 층, X: 호수

    scanf("%d", &T);

    for(int i = 0; i < T; i++) {
        scanf("%d%d%d", &H, &W, &N);
        X = N % H == 0? N / H : N / H + 1;
        Y = N % H == 0? H : N % H;
        printf("%d%02d\n", Y, X);
    }
}

追加の説明


きほんげんり


この問題を簡単な二次元配列問題に考えればいい.
十進法で見るとYを1の位置、Xを10の位置と考えれば分かりやすい.
例えば、10進数の13番目の数字は以下のように求めることができる.
X = 13/10 = 1
Y = 13 % 10 = 3
上記の内容を参考にします.
H進数からN番目の数字を見つけるのと同じです.
ただし、要求される数字は部屋番号で、数字は1からなので、Xに1を付けます.
したがって、以下のようにXとYを求めることができる.
X = N/H + 1
Y = N % H
ただしこの場合、N%H=0の場合、部屋番号は最上階のX-1号であり、この場合は以下のようになります.
X = N/H
Y = H

しゅつりょく


出力フォーマットはYXXまたはYXXXであり、出力フォーマットに適合する
Yは%dである.
Xは%02 dに出力され、XX形式で出力されます.