


간단한 문제이다. 알파벳을 1부터 26의 숫자로 치환해주고, 그것을 특정 상수 r과 곱해준다. 이 때 이 상수는 문자열의 문자 위치 값만큼 거듭제곱을 해준다.
위와 같은 일들을 문자열이 끝날 때까지 반복해서 그 값들을 모두 더한 후 알파벳 숫자인 26과 서로소인 소수 M과 modular연산, 나머지 연산을 한 값을 출력하면 된다.
알파벳을 숫자로 바꾸는 방법에 따라 매우 다양한 정답이 나올 수 있을 듯 하다. 아래의 방법은 미리 모든 알파벳을 문자열에 넣고 문자열의 모든 문자들과 하나하나 비교하여 (그 위치 + 1)을 하는 방법으로 변환하였다.
r = 31
M = 1234567891
alph = "abcdefghijklmnopqrstuvwxyz"
def H(str, L, r, M):
ans = 0
for i in range(L):
ai = alph.index(str[i]) + 1
ans += (ai * pow(r, i))
ans = ans % M
return ans
L = int(input())
str = input()
print(H(str, L, r, M))