글 작성자: 취업중인 피터팬
728x90

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

 

1271번: 엄청난 부자2

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

www.acmicpc.net

 

이 문제는 엄청난 부자 답게 엄청난 함정이 있습니다. 처음에 아무 생각 없이 풀면 80% 이상은 런타임 에러가 생기지 않을까 생각합니다.

이 문제의 함정은 (1 <= m <= n <= 10의1000제곱, m과 n은 10진수 정수) 에 있습니다. 10의 1000제곱은 Integer형이나 long형으로 받을 수 없는 자리 수 입니다. 그래서 java.math 에서 제공하는 라이브러리 BigInteger을 사용해여 문제를 해결해야 합니다.

 

정답

import java.util.*;
import java.math.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
		
		BigInteger money = sc.nextBigInteger();
		BigInteger live = sc.nextBigInteger();
		
		System.out.println(money.divide(live));
		System.out.println(money.remainder(live));
    }
}

 

BigInteger은 스캐너로 받을 때도 BigInteger로 받아야 하고 사칙 연산도 Integer형과 다릅니다.

더하기 : add()
빼   기 : subtract()
곱하기 : multiply()
나누기 : divide()

나머지 : remainder()

로 계산합니다.