문제
https://www.acmicpc.net/problem/18512
문제해설
두 명의 학생이 각각 p1, p2에서 출발해서 x와 y만큼 점프를 한다.
시작지점에서 가장 가까운 두 학생이 만나는 점을 구하면 된다.
문제풀이
두 명을 각각 x와 y만큼 증가시키며
동일한 지점에서 만날 수 있는지 확인해준다.
100만큼 돌리며 그 안에 안나오면 -1을 출력한다.
왜 100번만 돌리면 되는지 생각해보자
예를들어 99와 100만큼 뛴다고 가정하면
100번을 뛰면 각각 9900과 10000이 된다.
그리고 둘의 차이는 100이 되어 더 이상 절대 만날 수가 없는 것이다.
시작위치가 99만큼 차이가 난다고 하더라고 100번안에 못 만나면 -1이 된다.
전체코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int x, y, a, b; cin >> x >> y >> a >> b;
int xp = a, yp = b, cnt = 0;
while (cnt < 100) {
if (xp == yp) {
cout << xp;
return 0;
}
if (xp > yp)
yp += y;
else
xp += x;
cnt++;
}
cout << -1;
return 0;
}