정화 코딩

[C++] 카잉 달력 (백준 6064번) 본문

PS

[C++] 카잉 달력 (백준 6064번)

jungh150c 2024. 9. 3. 18:58

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

 

#include <iostream>
using namespace std;

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

    int t;
    cin >> t;

    while (t--) {
        int m, n, x, y;
        cin >> m >> n >> x >> y;

        int k = 0;
        bool psb = false;
        for (int i = 0; i < 40001; i++) {
            k = m * i + x;
            if ((k - y) % n == 0) {
                psb = true;
                break;
            }
        }

        if (psb) cout << k << '\n';
        else cout << -1 << '\n';
    }
}

잘 모르겠어서 태그를 깠더니 난생 처음 보는 중국인의 나머지 정리..?? 이게 뭐야 하면서 질문 게시판을 슬쩍 보니 중국인의 나머지 정리를 쓰지 않아도 풀 수 있는 것 같아서 다시 돌아와 스스로 풀어보았다. 

우선 다음과 같이 식을 세웠다.

m * a + x = n * b + y = k

여기서 a와 b는 어떤 수가 와도 상관이 없다. 다시 말해, k - x가 m으로 나누어 떨어져야 하고, 동시에 k - y도 n으로 나누어 떨어져야 한다. 그래서 나는 a를 0부터 40000까지 하나씩 대입해보면서 가능한 k가 있는지 찾았다. 찾아지면 그 즉시 종료하고, 40000까지 대입해봐도 찾을 수 없었다면 -1을 출력한다. (AC)

 

'PS' 카테고리의 다른 글

[C++] 공통 순열 (백준 1622번)  (0) 2024.09.08
[C++] 비트가 넘쳐흘러 (백준 17419번)  (0) 2024.09.07
[C++] 소-난다! (백준 19699번)  (0) 2024.09.03
[C++] IOIOI (백준 5525번)  (2) 2024.09.03
[C++] DSLR (백준 9019번)  (0) 2024.08.07
Comments