https://www.acmicpc.net/problem/1476
1476번: 날짜 계산
준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타
www.acmicpc.net
지구, 태양과 달을 나타내는 수의 주기가 15, 28, 19이므로 지구, 태양과 달을 나타내는 수가 같아지는 주기는 저 세 수의 최소공배수인 7980년이다. 컴퓨터는 1부터 7980까지 충분히 빠른 시간 안에 계산할 수 있으므로 1부터 모든 수에 대해 지구, 태양과 달을 나타내는 수를 계산해 세 수가 일치할 때 답을 출력하면 된다.
#include <cstdio>
int main() {
// E, S, M: 각각 지구, 태양, 달을 나타내는 수
// ans : 구하고자 하는 년도 저장, add : ans에 더할 가중치
int E, S, M, ans = 0, add = 1;
scanf("%d %d %d", &E, &S, &M);
// 나머지 연산이 용이하게끔 수를 1씩 빼 준다
E -= 1;
S -= 1;
M -= 1;
// 지구, 태양, 달을 나타내는 수가 같은 년도는 7980년에 한 번 온다
// 빠른 시간 안에 계산할 수 있는 범위이므로 완전 탐색 실행
while (ans % 15 != E || ans % 28 != S || ans % 19 != M) ans++;
// 나머지 연산을 위해 E, S, M에 1을 빼 주었으므로 ans에 1을 더한 값을 출력
printf("%d\n", ans + 1);
return 0;
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
1504번: 특정한 최단 경로 (0) | 2021.12.08 |
---|---|
1495번: 기타리스트 (0) | 2021.12.08 |
1475번: 방 번호 (0) | 2021.12.08 |
1463번: 1로 만들기 (0) | 2021.12.08 |
1461번: 도서관 (0) | 2021.12.08 |