https://www.acmicpc.net/problem/15829
r= 31 에 항의 거듭제곱을 하고 1234567891을 나누어서 출력한다.
# 문자열의 길이 입력
# 영문 소문자 입력
# 소문자를 각각의 배열에 담기
# 해시 처리하기
# 문자열의 아스키코드 값 - 96 한 상태만큼 r(31)을 거듭제곱 하기
# 값 출력하기
코드 작성해보다가 굳이 배열에 담을필요 없다고 판단하여 소문자를 배열에 담는 과정을 생략해보았다.l = int(input())
s = input()
result = 0
for i in range(l):
result += (ord(s[i]) - 96) * (31 ** i)
print(result)
→ 50점이 나왔다. 틀리거나, 버그가 발생하거나 그랬는데 점수가 나온건 처음인 것 같다.수학 기호를 보면 M을 mod해주는데, 나머지연산을 안해서 반만 맞았던 것이였다.
```python
l = int(input())
s = input()
result = 0
for i in range(l):
result += (ord(s[i]) - 96) * (31 ** i)
print(result % 1234567891)
```
메모리: 31256KB