※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 27590번 문제인 Sun and Moon이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/27590 

 

27590번: Sun and Moon

You recently missed an eclipse and are waiting for the next one! To see any eclipse from your home, the sun and the moon must be in alignment at specific positions. You know how many years ago the sun was in the right position, and how many years it takes

www.acmicpc.net

태양과 달이 동시에 정위치에 오는 다음 순간까지의 시간을 계산하는 문제이다.

 

태양과 달이 다음으로 정위치에 오는 순간을 각각 S와 M, 정위치에 위치하는 주기를 각각 pS, pM이라 하자. 이 때, pS와 pM의 값이 충분히 작고(50이하) 답이 5000이하로 항상 존재함을 보장하고 있으므로, S와 M의 값이 같아질 때까지 둘 중 더 작은 값에 해당 천체의 주기를 더하는 것으로(즉, 다음으로 정위치에 오는 순간을 계산하는 것으로) 문제를 해결할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int S, pS, M, pM;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> S >> pS >> M >> pM;
	S = pS - S, M = pM - M;

	while (S != M) {
		if (S < M) S += pS;
		else M += pM;
	}

	cout << S;
}
728x90

+ Recent posts