문제 출처: https://www.acmicpc.net/problem/10158
문제
위 그림은 6×4 격자에서 처음에 (4,1)에서 출발한 개미가 움직인 길을 보여주고 있다. 처음에 (4,1)에 있는 개미는 2시간 후에 (6,3)에 있으며 8시간 후에 (0,1)에 있다. 만일 그 개미가 처음에 (5,3)에 있었다면 매 시간마다 (6,4), (5,3), (4,2), (3,1)로 움직인다.
여러분은 크기 w×h인 격자 공간에서 처음에 (p,q)에서 출발하는 개미의 t시간 후의 위치 (x,y)를 계산하여 출력해야 한다. 개미는 절대 지치지 않고 같은 속력으로 이동한다고 가정한다.
문제에서 w와 h는 자연수이며 범위는 2 ≤ w,h ≤ 40,000이다. 그리고 개미의 초기 위치 p와 q도 자연수이며 범위는 각각 0 < p < w과 0 < q < h이다. 그리고 계산할 시간 t의 범위는 1 ≤ t ≤ 200,000,000이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
int W = Integer.parseInt(tokenizer.nextToken()); // 열
int H = Integer.parseInt(tokenizer.nextToken()); // 행
tokenizer = new StringTokenizer(reader.readLine());
int X = Integer.parseInt(tokenizer.nextToken()); // x 좌표
int Y = Integer.parseInt(tokenizer.nextToken()); // y 좌표
tokenizer = new StringTokenizer(reader.readLine());
int T = Integer.parseInt(tokenizer.nextToken()); // 시간
int resultX = (X + T) % (W * 2);
int resultY = (Y + T) % (H * 2);
if (resultX > W) resultX = W * 2 - resultX;
if (resultY > H) resultY = H * 2 - resultY;
System.out.println(resultX + " " + resultY);
}
}