문제링크 : https://www.acmicpc.net/problem/10158
10158번: 개미
가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MAX 987654321
#define pii pair <int, int>
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int W, H, P, Q, T;
cin >> W >> H >> P >> Q >> T;
int NP = (P+T) % (2*W);
int NQ = (Q+T) % (2*H);
if(NP > W) //반대로 옴
{
cout << 2*W - NP << " ";
}
else
{
cout << NP << " ";
}
if(NQ > H) //반대로 옴
{
cout << 2*H - NQ;
}
else
{
cout << NQ;
}
return 0;
}
사이클이 2W, 2H 주기로 방향이 반대로 바뀐다.
따라서 T초후의 거리인 P+T와 Q+T를 2W 또는 2H로 나누고 나머지가 W보다 크다면, 반대로 온 것이다.
따라서 2W에다가 위의 나머지 값을 빼주면된다.
나머지가 W보다 크지 않다면, 그대로 나머지를 출력해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 12789번] 도키도키 간식드리미 (0) | 2023.05.02 |
---|---|
[백준 11497번] 통나무 건너뛰기 (C++) (0) | 2023.04.30 |
[백준 18352번] 특정 거리의 도시 찾기 (C++) (0) | 2023.04.26 |
[백준 15903번] 카드 합체 놀이 (C++) (0) | 2023.04.24 |
[백준 1991번] 트리 순회 (C++) (0) | 2023.04.21 |