백준의 날짜계산(1476) 문제이다.
( 문제 바로가기 )
[ 문제풀이 ]
1) 범위가 ~15, ~28, ~19 인 3개의 숫자를 통해서 년도를 나타낸다.
1년 = 1, 1, 1
2년 = 2, 2, 2
15년 = 15, 15, 15
16년 = 1, 16, 16
이런식으로 3개의 숫자가 계속해서 1씩 증가하면서 해당 범위를 넘어가는 숫자들은 다시 1부터 되돌아가는 식이다.
구하는 과정을 생각해보면, 특정년도 x에서 x-E = 15의 배수 , x-S = 28의 배수, x-M = 19의 배수라는 것을 알 수 있다.
따라서 이 3개의 조건을 모두 만족하는 값이 답이 될 것이다.
[ 소스코드 ]
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 36 37 38 39 40 | #include<iostream> #define endl "\n" using namespace std; int E, S, M; void Input() { cin >> E >> S >> M; } void Solution() { int Year = 1; while (1) { if ((Year - E) % 15 == 0 && (Year - S) % 28 == 0 && (Year - M) % 19 == 0) break; Year++; } cout << Year << endl; } void Solve() { Input(); Solution(); } int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // freopen("Input.txt", "r", stdin); Solve(); return 0; } | cs |
'[ BOJ Code ] > # BOJ -' 카테고리의 다른 글
[ 백준 1987 ] 알파벳 (C++) (4) | 2019.01.13 |
---|---|
[ 백준 1699 ] 제곱수의 합 (C++) (0) | 2019.01.13 |
[ 백준 5566 ] 주사위 게임 (C++) (0) | 2019.01.13 |
[ 백준 11048 ] 이동하기 (C++) (1) | 2019.01.12 |
[ 백준 2309 ] 일곱 난쟁이 (C++) (0) | 2019.01.11 |