0%

[JAVA] 프로그래밍 대회에서 사용하는 자바 - 4

백준 강의 정리 - BigInteger

목차

  1. 1. BigInteger
  2. 2. 기본 사용 방법
  3. 3. 여러가지 사칙 연산
  4. 4. 입력 받기
  5. 5. 같은 값인지 판단하기
  6. 6. 예시1 - 큰 수 A+B
  7. 7. 예시1 - a^b

1. BigInteger

  • 큰 정수를 나타낼 때 사용하는 클래스
  • java.math.*; 에 들어있음.
  • 자바에서만 존재하는 자료구조이다.

2. 기본 사용 방법

1
2
3
4
5
6
7
BigInteger a = new BigInteger("10000");
BigInteger b = new BigInteger("1000");
// a+b와 같은 연산이 되지않기 때문에 덧셈은 아래와 같이 처리
BigInteger c = a.add(b);
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);

3. 여러가지 사칙 연산

1
2
3
4
5
6
7
8
9
10
11
12
13
System.out.println("a+b = " + a.add(b)); //덧셈
System.out.println("a-b = " + a.subtract(b)); //뺄셈
System.out.println("a*b = " + a.multiply(b)); //곱하기
System.out.println("a/b = " + a.divide(b)); //나누기
System.out.println("a%b = " + a.remainder(b)); //나머지
System.out.println("gcd(a,b) = " + a.gcd(b)); //최대공약수
System.out.println("-a = " + a.negate()); //부호 변경
System.out.println("a^10 = " + a.pow(10)); //제곱

// 0, 1, 10은 따로 만들 필요 없이 바로 사용할 수 있음
System.out.println("ZERO = " + BigInteger.ZERO);
System.out.println("ONE = " + BigInteger.ONE);
System.out.println("TEN = " + BigInteger.TEN);

4. 입력 받기

1
2
3
4
5
6
7
8
9
10
11
BigInteger a = sc.nextBigInteger();
BigInteger b = sc.nextBigInteger();
int c = a.compareTo(b);
if (c < 0) { // 음수
System.out.println("<");
} else if (c == 0) { // 0
System.out.println("==");
} else { // 크다
System.out.println(">");
}
System.out.println("compareTo = " + c);

5. 같은 값인지 판단하기

1
2
3
4
5
6
7
boolean e = a.equals(b);
if (e) {
System.out.println("==");
} else {
System.out.println("!=");
}
System.out.println("equals = " + e);

6. 예시1 - 큰 수 A+B

1
2
3
4
5
6
7
8
9
10
11
import java.math.*;
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
BigInteger a, b;
a = sc.nextBigInteger();
b = sc.nextBigInteger();
System.out.println(a.add(b));
}
}

7. 예시2 - a^b

  • 여기서 a는 실수가 된다.
  • 실수 a와 정수 b가 주어졌을 때 어떻게 정확하게 할까?
  • BigDecimal을 사용하면 된다.
  • toString()을 사용하면 정확한 값을 출력할 수 없다. toPlainString()을 사용하자.
1
2
3
4
5
6
7
8
9
10
11
import java.math.*;
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
BigDecimal a = sc.nextBigDecimal();
int b = sc.nextInt();
BigDecimal c = a.pow(b);
System.out.println(c.toPlainString());
}
}