백준의 날짜계산(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 == 0break;
        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

  



+ Recent posts