18512번 : 점프 점프
문제)
두 학생 A와 B가 일직선상의 트랙에서 같은 방향으로 멀리뛰기를 하고 있다. A는 한 번에 X 미터를, B는 한 번에 Y 미터를 뛴다. 두 학생의 시작 지점과 X, Y에 대한 정보가 주어졌을 때, 두 학생이 공통적으로 지나게 되는 지점 중에서 시작 지점으로부터 가장 가까운 지점을 찾는 프로그램을 작성하시오.
예를 들어 한 번에 10미터를 뛰는 A는 30의 지점에서 멀리뛰기를 시작하고, 한 번에 12미터를 뛰는 B는 8의 지점에서 시작한다고 가정하자. A가 5번의 멀리뛰기를 하고, B가 6번의 멀리뛰기를 하면 두 사람은 80의 지점을 공통으로 지나게 되며, 이는 두 학생의 시작 지점에서 가장 가까운 지점이다.
입력 :
첫째 줄에 두 사람이 한 번에 멀리뛰기를 하는 거리 X, Y와 시작 지점의 위치 값 P1, P2가 각각 공백을 기준으로 구분되어 자연수로 주어진다. (1 ≤ X, Y, P1, P2 ≤ 100)
출력 :
첫째 줄에 두 학생이 공통적으로 지나는 지점 중에서 가장 가까운 지점을 출력한다.
단, 두 학생이 공통적으로 지나는 지점이 없다면 -1을 출력한다.
풀이)
x와 y의 최댓값이 100까지밖에 되지않아
대략 10만번까지 배열을 만들어 둔 뒤,
거기까지 겹치는 구간이 없으면 -1을 출력하도록 설계했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <iostream>
using namespace std;
int x, y;
int p1, p2;
bool check[100100];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> x >> y >> p1 >> p2;
int ans = -1;
for (int i = p1; i < 100100; i += x)
{
check[i] = 1;
}
for (int i = p2; i < 100100; i += y)
{
if (check[i])
{
ans = i;
break;
}
}
cout << ans;
return 0;
}
|
cs |
출처 : https://www.acmicpc.net/problem/18512
18512번: 점프 점프
첫째 줄에 두 사람이 한 번에 멀리뛰기를 하는 거리 X, Y와 시작 지점의 위치 값 P1, P2가 각각 공백을 기준으로 구분되어 자연수로 주어진다. (1 ≤ X, Y, P1, P2 ≤ 100)
www.acmicpc.net
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 19699번 : 소-난다! (C++) (0) | 2023.08.06 |
---|---|
[백준] 1744번 : 수 묶기 (C++) (0) | 2023.08.06 |
[백준] 19539번 : 사과나무 (C++) (0) | 2023.08.05 |
[백준] 16435번 : 스네이크버드 (C++) (0) | 2023.08.05 |
[백준] 13910번 : 개업 (C++) (0) | 2023.08.05 |