[Baekjoon]10250号(BronzeIII):ACMホテル(Java)


1. Problem 📃


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


部屋番号は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番に手配しなければならない.

2. Input 📇


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

3. Output 📠


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

4. Example 📚


[IO例]
入力例出力26 12 1030 50 724021203

5. Solution 🔑

  • テストボックス(T)、フロア数(H)、フロア数(W)、何番目のお客様(N).
  • 号は層数(Y)+(0)+何格目(X)によってその層の湖数を決定する.
    そのため、宿泊する寮の番号はN%Hで、何階目の水を表し、残りを0で割ると最上階(H)になります.そして、湖はN/Hをあげます.
    そうでなければ、湖はN/H+1を作るだけです.1番からなので、1をプラスします.
  • 湖が10未満の場合、層と湖の間に0を加え、そうでなければ層と湖の出力だけを加えます.
  • 6. Code 💻

    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int T = sc.nextInt();
    		int H, W, N, Y, X;
    		
    		for(int i=0; i<T; i++) {
    			H = sc.nextInt();
    			W = sc.nextInt();
    			N = sc.nextInt();
    			Y = N%H;
    			X = N/H+1;
    			if(N%H == 0) {
    				Y = H;
    				X = N/H;
    			}
    			if(X/10 < 1) {
    				System.out.println(Y + "0" +  X);	
    			}
    			else {
    				System.out.println(Y+""+X);
    			}
    		}
    	}
    }