퍼펙트코딩
퍼펙트코딩
퍼펙트코딩
전체 방문자
오늘
어제
  • 분류 전체보기 (35)
    • C++ (4)
    • Phython (1)
    • C (2)
    • 프로그램 에러 (3)
    • 공부 정리글 (1)
      • 자료구조 (0)
    • 백준 (23)
      • GOLD (5)
      • BRONZE (8)
      • SILVER (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BOJ 1715
  • BOJ 1181
  • c++
  • 백준 3003
  • 9084 C++
  • BOJ10807
  • 백준 10807
  • 백준 23972번
  • 백준 9084번
  • 백준 3003번
  • 10807 C++
  • BOJ 9084
  • 23972 C++
  • 백준 23972
  • BOJ 3003
  • 1715 C++
  • 백준
  • 백준 1715번
  • 3003 C++
  • BOJ 23972

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
퍼펙트코딩

퍼펙트코딩

백준/BRONZE

[백준 15829번][C++] Hashing

2022. 8. 6. 23:24
728x90
반응형
{모듈러 속성}

(a + b) mod n = ((a mod n) + (b mod n)) mod n

(a - b) mod n = ((a mod n) - (b mod n)) mod n

(a * b) mod n = ((a mod n) * (b mod n)) mod n
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    long long hashNum = 0;

    //알파벳 길이수
    int len;
    cin >> len;

    //문장 받음
    string str;
    cin >> str;

    //각 문자에 해당하는 수열 저장
    vector<int> nums;
    for (int i = 0;i < len; i++) {
        nums.push_back(str[i] - 'a' + 1);
    }

    
    long long R = 1;

    for(int i=0;i<len;i++){
        //R값과 nums 값 곱하고 나머지를 hashNum에 더해줌
        hashNum = hashNum + (nums[i] * R) % 1234567891;
        //한번 더 나누어 준다
        hashNum %= 1234567891;

        //R값 31다시 곱해준다
        R = R * 31;
        //1234567891로 나누어준다
        R %= 1234567891;

    }

    cout << hashNum%1234567891;
}
728x90
반응형

'백준 > BRONZE' 카테고리의 다른 글

[백준 10807번][C++] 개수 세기  (0) 2022.08.30
[백준 2455번][C++] 지능형 기차  (0) 2022.08.29
[백준 16503번][C++] 괄호 없는 사칙연산  (0) 2022.08.21
[백준 2010번][C++] 플러그  (0) 2022.07.16
[백준 2609번][C++] 최대 공약수와 최소 공배수  (0) 2022.07.16
    '백준/BRONZE' 카테고리의 다른 글
    • [백준 2455번][C++] 지능형 기차
    • [백준 16503번][C++] 괄호 없는 사칙연산
    • [백준 2010번][C++] 플러그
    • [백준 2609번][C++] 최대 공약수와 최소 공배수
    퍼펙트코딩
    퍼펙트코딩

    티스토리툴바