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
반응형
'Baekjoon > Bronze' 카테고리의 다른 글
Baekjoon 28702. FizzBuzz c++ [Bronze I] (0) | 2024.11.20 |
---|---|
Baekjoon 10989. 수 정렬하기 3 c++ [Bronze I] (0) | 2024.11.19 |
Baekjoon 2292.벌집 c++ [Bronze II] (0) | 2024.11.10 |
Baekjoon 2231. Digit Generator c++ [Bronze II] (0) | 2024.11.06 |
Baekjoon 10809. 알파벳 찾기 c++[Bronze II] (0) | 2024.11.03 |