728x90
https://www.acmicpc.net/problem/1271
[문제]
[코드]
import java.math.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger n = sc.nextBigInteger();
BigInteger m = sc.nextBigInteger();
System.out.println(n.divide(m));
System.out.println(n.remainder(m));
sc.close();
}
}
[설명]
1. 두 수를 입력 받아야 되는데 문제에서 두 수의 범위를 (1 ≤ m ≤ n ≤ 10^1000, m과 n은 10진수 정수)라고 말 하고 있다.
2. int형은 4byte로 범위는 '-2,147,483,648~2,147,483,647'이다. 그러므로 런타임 에러가 뜬다.
3. int형 보다 큰 정수형인 long은 8byte로 범위는 '-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807'으로 10^1000를 담을 수 없다.
4. 이것들 보다 더 큰 정수형은 'BingInteger'로 java.math 패키지에 포함돼있는 클래스다.
5. 'BigInteger'의 사칙연산은
으로 되기때문에 이 표를 보고 나눗셈과 나머지를 구하면 된다.
[결과]
브론즈 문제가 정답률이 왜이리 낮나 했더니 그럴만한 이유가 있었다... 이 문제 덕분에 BigInteger에 대해서도 알게 되었다.
728x90
'백준(Baekjoon)' 카테고리의 다른 글
[백준] 3046번: R2 - 자바 (0) | 2022.03.17 |
---|---|
[백준] 2475번: 검증수 - 자바 (0) | 2022.03.15 |
[백준] 2338번: 긴자리 계산 - 자바 (0) | 2022.03.14 |
[백준] 2480번: 주사위 세개 - 자바 (0) | 2022.03.14 |
[백준] 11654번: 아스키 코드 - 자바 (0) | 2022.03.12 |