기타/백준

백준 C# 15829 Hashing

Krapboss 2024. 7. 10. 21:02
문제

 

 

 

 

M의 나머지 값이 되도록 해싱 값을 지정하는 것.

 

 

해결

 

거듭제곱으로 지속적으로 증가하는 'r^i' 값을 M의 나머지값으로 유지하는 것이 100점의 요점

 

internal class E15829 //Hashing
{
    //'a' 아스키코드  = 97
    static void Main(string[] args)
    {
        long r = 1, M = 1234567891,hash = 0 ;
        Console.ReadLine();
        string str = Console.ReadLine();

        foreach (char c in str)
        {
            hash = (hash + (c-96) * r) % M;
            r =  (r * 31) % M;
        }
        Console.WriteLine(hash);
    }
}