이 문제는 특정 호텔에 방문하는 손님들을 어느 방에 매칭할지에 대한 문제 이다.
손님들의 특성은 층수와 관계없이 엘리베이터와 가깝기를 희망한다고 본문에 정의 되어있다.
따라서, 수학적을 풀어보면, 높이가 h 이고 넓이가 w 일때,
h의 w배수 손님을 받을 수 있으니,
n번째 손님이 h의 몇 배수와 몇 배수 사이에 있는지 체크하여,
그 n을 6으로 나눈것의 몫이 층수가 되고, 그 나머지가 방 번호가 된다.
//ACM 호텔
//호텔 방 번호의 규칙을 찾아 출력하는 문제
public class BJ_10250 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int numOfTestCase = Integer.parseInt(br.readLine());
while (0 < numOfTestCase) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int height = Integer.parseInt(st.nextToken());
int width = Integer.parseInt(st.nextToken());
int num = Integer.parseInt(st.nextToken());
if(height < 1) return;;
if(width > 99) return;
if(num < 1 || num > height * width) return;
int roomNum = getAssignedRoomNumber(height,width,num);
System.out.println(roomNum);
numOfTestCase--;
}
}
public static int getAssignedRoomNumber(int height, int width, int num) {
if(num == 1) return 101;
//층수별로 나머지와 몫이 동일하도록 계산하기 쉽게 Num-1 로 계산
int line = ((num - 1) / height) + 1; //라인은 N번째 손님을 height로 나눈 몫
int storey = (((num - 1) % height) + 1) * 100; //층수는 N번째 손님을 height로 나눈 나머지로 계산
return line + storey;
}
}