문제
두 학생 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을 출력한다.
예제 입력 1
10 12 30 8 |
예제 출력 1
80 |
예제 입력 2
1 1 7 12 |
예제 출력 2
12 |
예제 입력 3
7 7 2 1 |
예제 출력 3
-1 |
더보기
Solution
#include<stdio.h>
#include<stdbool.h>
int main(void)
{
int X, Y, P1, P2;
bool solved=false;
scanf("%d %d %d %d", &X, &Y, &P1, &P2);
for(int i=0;i<=100;i++)
{
int K=i*X+P1;
for(int j=0;j<=100;j++)
if(K==(j*Y+P2))
{
solved=true;
printf("%d\n", K);
break;
}
if(solved)
break;
}
if(!solved)
printf("-1\n");
return 0;
}
728x90
'백준 알고리즘' 카테고리의 다른 글
<백준 알고리즘> 9461번: 파도반 수열 (0) | 2020.09.05 |
---|---|
<백준 알고리즘> 10162번: 전자레인지 (0) | 2020.09.03 |
<백준 알고리즘> 1644번: 소수의 연속합 (0) | 2020.09.03 |
<백준 알고리즘> 6588번: 골드바흐의 추측 (0) | 2020.09.02 |
<백준 알고리즘> 1003번: 피보나치 함수 (0) | 2020.09.02 |