문제 풀이 및 개발 공간

[백준] 15829번 Hashing (bronze 2 본문

백준공부/java

[백준] 15829번 Hashing (bronze 2

gomduri43 2024. 2. 27. 12:28

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

public class Main{
    public static void main(String[]args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));

        BigInteger[] temp=new BigInteger[51];
        temp[0]=new BigInteger("1");
        for(int i=1; i<51; i++){
            temp[i]=new BigInteger("31");
            temp[i]=temp[i].multiply(temp[i-1]);
        }

        int a=Integer.valueOf(br.readLine());
        String text=br.readLine();
        BigInteger answer=new BigInteger("0");
        BigInteger re=new BigInteger("1234567891");

        for(int i=0; i<a; i++){
            String hash=String.valueOf(text.charAt(i)-'a'+1);
            BigInteger mid=new BigInteger(hash);
            answer=answer.add(temp[i].multiply(mid).remainder(re));
        }
        bw.write(answer.remainder(re)+"");
        bw.flush();
    }
}