큰 정수형을 나타낼 때 BigInteger in java

byeol·2023년 2월 12일
0

큰 정수형을 나타낼 때
int는 10자리
long은 19자리
그 외를 넘어가면 String의 연산이 가능한 BigInteger를 사용하자

한가지 중요한 것은 import java.math.*;
를 해줄것!

대부분 팩토리얼과 같은 조합의 문제에서 꼭 오버플로우가 발생해서
확인하는 절차가 필요하며 long으로 선언해도 넘어가면 BigInteger를 사용하자.
(dynamic programming)

BigInteger bi = new BigInteger("1");

bi.add(BigInteger.valueOf(2));//덧셈 결과 : 3
bi.multiply(new BigInteger("4"));//곱하기 결과 : 4
bi.remainder(new BigInteger("4"));//나머지 결과 : 1
bi.subtract(new BigInteger("3"));//뺄셈 결과 : -2
// 뺄셈 substract아님 주의!!

백준의 15829번은 이 BigInteger를 사용해야 100점을 맞는다.

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


class Main{
    public static void main(String[] args) throws IOException{

       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

       int A = Integer.parseInt(br.readLine());
       String input = br.readLine();

       BigInteger sum= new BigInteger("0");
       BigInteger gegom= new BigInteger("1");
       BigInteger three= new BigInteger("31");
       for(int i=0;i<A;i++){
           BigInteger a = BigInteger.valueOf(input.charAt(i)-96);
           if(i!=0) gegom=gegom.multiply(three);
           sum= sum.add(a.multiply(gegom));
       }

       System.out.println(sum.remainder(BigInteger.valueOf(1234567891)));
    }


}
profile
꾸준하게 Ready, Set, Go!

0개의 댓글