https://www.acmicpc.net/problem/10430
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
int C = sc.nextInt();
System.out.println((A + B)%C);
System.out.println((A%C + B%C)%C);
System.out.println((A * B)%C);
System.out.println((A%C * B%C)%C);
//이하는 문제 정답과 무관한 코드
System.out.println((A - B)%C);
System.out.println((A%C - B%C)%C);
System.out.println((A%C - B%C + C)%C);
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
알고리즘 테스트에서 계산결과가 int나 long과 같은 자료형의 범위를 넘어설 때,
계산결과를 ~로 나눈 나머지를 정답으로 제출하라 한다고 한다.
TIP
이때 뺄셈의 나머지 연산
(A - B)%C 와 (A%C - B%C)%C 의 결과는 같을까?
더보기
풀이
0 ≤ A%C < C , 0 ≤ B%C < C 이므로
-C ≤ (A%C - B%C) < C 이다.
각변에 C를 더해주면
0 ≤ (A%C - B%C) + C < 2C 이고,
여기서 각변을 C로 나눠주면
0 ≤ (A%C - B%C + C)%C < 2C%C 가 되므로,
항상 양의 나머지값을 얻을 수 있다.
(A%C - B%C)%C 의 결과는
파이썬에서는 항상 양의 나머지로 출력되지만,
JAVA, C/C++ 에서는 음의 나머지로 출력될 수 있다.
☞
양의 나머지를 얻고자 할 때에는
(A%C - B%C + C)%C
를 활용하자
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]1978번: 소수 찾기(java, c++) (0) | 2019.09.17 |
---|---|
[BOJ]1934번: 최소공배수(java, c++) (0) | 2019.09.17 |
[BOJ]2609번: 최대공약수와 최소공배수(java, c++) (0) | 2019.09.17 |
[BOJ]11656번: 접미사배열(java) (0) | 2019.09.11 |
[BOJ]10824번: 네 수(java, c++) (0) | 2019.09.09 |
댓글