알고리즘 분류
- 수학
- 사칙연산
- 임의 정밀도 / 큰 수 연산
문제
두 수 A, B를 입력받아, A+B, A-B, A×B를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 A가, 둘째 줄에 B가 주어진다.
각각의 수는 10진수로 1,000자리를 넘지 않으며 양수와 음수가 모두 주어질 수 있다.
출력
첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A×B를 출력한다. 각각을 출력할 때, 답이 0인 경우를 제외하고는 0으로 시작하게 해서는 안 된다. (1을 01로 출력하면 안 된다는 의미)
풀이
정수 자료형 표현
- byte / 8bits / -2^7 ~ 2^7-1 (-128 ~ 127)
- short / 16bits / -2^15 ~ 2^15-1 (-32768 ~ 32767)
- int / 32bits / -2^31 ~ 2^31-1 (-2147483648 ~ 2147483647)
- long / 64bits / -2^63 ~ 2^63-1 (-9223372036854775808 ~ 9223372036854775807)
정수 자료형으로 1000자리 숫자를 표현할 수 없기 때문에 BigInteger이라는 클래스를 이용한다.
- BigInteger : java.math 패키지에 포함된 클래스로 문자열 형태로 숫자를 무한대로 받을 수 있음
- 사칙연산/나머지 : add(), subtract(), multiply(), divide(), remainder()
- BigInteger 클래스 문서
소스 코드
public class Baek2338 {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
BigInteger n = scanner.nextBigInteger();
BigInteger m = scanner.nextBigInteger();
System.out.println(n.add(m));
System.out.println(n.subtract(m));
System.out.println(n.multiply(m));
scanner.close();
}
}
Ghost