Baekjoon/Bronze

Baekjoon 15829. Hashing c++ [Bronze II]

Hun-bot 2024. 11. 13. 17:26
728x90
반응형

처음에는 cmath의 pow연산을 썼는데 pow함수는 실수형 연산을 수행하기에 정수형 해시 값을 계산할 때 불필요한 오차가 생길 수도 있다고 한다. 그리고 너무 큰 값일 때는 overflow가 발생해서 문제가 될 수도 있기에 직접 구현해야지 모든 테스트가 통과되 100점이 나올 것이다.

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main(){
    int L;
    string s;
    cin >> L;
    cin >> s;

    const int M=1234567891;
    const int r=31;

    long long hash_val=0;
    long long power=1;

    for (int i = 0; i < L; i++){
        int temp=s[i]-'a'+1;
        hash_val=(hash_val+temp*power)%M;
        power=(power*r)%M;
    }
    cout << hash_val;
}
728x90
반응형