본문 바로가기
백준(Baekjoon)

[백준] 1271번: 엄청난 부자2 - 자바

by IT 정복가 2022. 3. 14.
728x90

https://www.acmicpc.net/problem/1271

 

1271번: 엄청난 부자2

첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 101000, m과 n은 10진수 정수)

www.acmicpc.net


[문제]


[코드]

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