※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 12971번 문제인 숫자 놀이이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/12971
12971번: 숫자 놀이
공백으로 구분된 6개의 정수 P1, P2, P3, X1, X2, X3가 순서대로 주어진다. 모든 숫자는 1과 300사이의 정수다.
www.acmicpc.net
어떤 \(P_1\), \(P_2\), \(P_3\)로 나눈 나머지가 각각 \(X_1\), \(X_2\), \(X_3\)인 수 \(N\)이 존재한다고 가정해보자. 이때 \(N\)이 \(P_1P_2P_3\)보다 크다면 \(N-P_1P_2P_3\) 또한 위의 성질을 만족함을 쉽게 알 수 있다. 따라서 문제의 답이 존재한다면 1부터 \(P_1P_2P_3\)까지의 수중에서 항상 찾을 수 있고, 여기에서 답을 찾지 못했다면 -1을 출력해 문제를 해결할 수 있다.
문제의 제약조건에 따라 \(P_1P_2P_3\)은 2700만 이하이므로 1부터 \(P_1P_2P_3\)까지의 정수를 하나하나 확인하는 브루트포스로 이 문제를 충분히 빠르게(2초 이내로) 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int P1, P2, P3, X1, X2, X3;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> P1 >> P2 >> P3 >> X1 >> X2 >> X3;
for (int i = 1; i < 30000000; i++) {
if (i % P1 != X1) continue;
if (i % P2 != X2) continue;
if (i % P3 != X3) continue;
cout << i;
return 0;
}
cout << -1;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 27108 // C++] Ordered Fractions (0) | 2024.04.11 |
---|---|
[BOJ 25955 // C++] APC는 쉬운 난이도 순일까, 아닐까? (0) | 2024.04.10 |
[BOJ 13728 // C++] 행렬식과 GCD (0) | 2024.04.08 |
[BOJ 6646 // C++] Wooden Fence (1) | 2024.04.07 |
[BOJ 7827 // C++] Transitive Closure (0) | 2024.04.06 |