문제
세 수 A, B, C가 주어졌을 때, 나머지 연산의 분배 법칙을 검증하는 네 가지 식의 결과를 출력한다.
입력
첫째 줄에 A, B, C가 주어진다 (2 이상 10,000 이하).
출력
- 첫째 줄: (A+B)%C
- 둘째 줄: ((A%C)+(B%C))%C
- 셋째 줄: (A*B)%C
- 넷째 줄: ((A%C)*(B%C))%C
예제
| 입력 | 출력 |
|---|---|
5 8 4 | 1 1 0 0 |
풀이
나머지 연산의 분배 법칙에 따라 네 가지 수식을 계산하여 출력한다.
- A, B, C를 StringTokenizer로 파싱한다
- (A+B)%C와 ((A%C)+(B%C))%C를 각각 계산한다
- (AB)%C와 ((A%C)(B%C))%C를 각각 계산한다
- StringBuilder로 결과를 모아 한 번에 출력한다
핵심 아이디어: 모듈러 연산의 분배 법칙에 의해 첫째-둘째, 셋째-넷째 줄의 결과는 항상 같다.
코드
package day499;
import java.io.*;
import java.util.*;
public class Day497BOJ10430나머지 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder();
sb.append((A + B) % C).append('\n');
sb.append((A % C + B % C) % C).append('\n');
sb.append((A * B) % C).append('\n');
sb.append((A % C * B % C) % C);
System.out.println(sb);
}
}복잡도
- 시간: O(1)
- 공간: O(1)