업데이트:

문제 링크

백준 25487번 - 단순한 문제 (Large) (Silver 3)

문제 설명

세 개의 자연수 a, b, c가 주어져 있다. 다음 조건을 만족하는 정수 쌍 (x, y, z)의 개수를 구하시오.

  • $ 1 \leq x \leq a$
  • $ 1 \leq y \leq b$
  • $ 1 \leq z \leq c$
  • $x \; \% \; y = y \; \% \; z = z \; \% \; x$

정답 코드 및 설명

마지막 조건식이 무슨 의미인지 생각해보자.
$x, y, z$ 중 가장 작은 수가 $x$라고 가정하면, $z \; \% \; x < x$이다.
$x < y$ 라면 $x \; \% \; y = x$이므로 모순. 따라서 $x = y$ 이다.
비슷한 방식으로, 마지막 조건식과 $x = y = z$가 동치임을 보일 수 있다.
따라서 조건을 만족하는 정수 쌍 (x, y, z)의 개수는 a, b, c의 최솟값과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int t = Integer.parseInt(br.readLine());
        StringTokenizer st;
        int a;
        while (t-- > 0) {
            st = new StringTokenizer(br.readLine());
            a = Integer.parseInt(st.nextToken());
            a = Math.min(a, Integer.parseInt(st.nextToken()));
            a = Math.min(a, Integer.parseInt(st.nextToken()));
            bw.write(a + "\n");
        }
        bw.close();
    }
}

댓글남기기