https://www.acmicpc.net/problem/15829
๋ฌธ์
APC์ ์จ ๊ฒ์ ํ์ํ๋ค. ๋ง์ฝ ์ฌ๋ฌ๋ถ์ด ํ๊ต์์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์๊ฐํ๋ค๋ฉด ํด์ ํจ์์ ๋ํด ๋ฐฐ์ ์ ๊ฒ์ด๋ค. ํด์ ํจ์๋ ์์์ ๊ธธ์ด์ ์ ๋ ฅ์ ๋ฐ์์ ๊ณ ์ ๋ ๊ธธ์ด์ ์ถ๋ ฅ์ ๋ด๋ณด๋ด๋ ํจ์๋ก ์ ์ํ๋ค. ํด์ ํจ์๋ ๋ฌด๊ถ๋ฌด์งํ ์์ฉ ๋ถ์ผ๋ฅผ ๊ฐ๋๋ฐ, ๋ํ์ ์ผ๋ก ์๋ฃ์ ์ ์ฅ๊ณผ ํ์์ ์ฐ์ธ๋ค.
์ด ๋ฌธ์ ์์๋ ์ฌ๋ฌ๋ถ์ด ์์ผ๋ก ์ ์ฉํ๊ฒ ์ธ ์ ์๋ ํด์ ํจ์๋ฅผ ํ๋ ๊ฐ๋ฅด์ณ์ฃผ๊ณ ์ ํ๋ค. ๋จผ์ , ํธ์์ ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ ๋ฌธ์์ด์๋ ์๋ฌธ ์๋ฌธ์(a, b, ..., z)๋ก๋ง ๊ตฌ์ฑ๋์ด์๋ค๊ณ ๊ฐ์ ํ์. ์์ด์๋ ์ด 26๊ฐ์ ์ํ๋ฒณ์ด ์กด์ฌํ๋ฏ๋ก a์๋ 1, b์๋ 2, c์๋ 3, ..., z์๋ 26์ผ๋ก ๊ณ ์ ํ ๋ฒํธ๋ฅผ ๋ถ์ฌํ ์ ์๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ํ๋์ ๋ฌธ์์ด์ ์์ด๋ก ๋ณํํ ์ ์๋ค. ์๋ฅผ ๋ค์ด์ ๋ฌธ์์ด "abba"์ ์์ด 1, 2, 2, 1๋ก ๋ํ๋ผ ์ ์๋ค.
ํด์ ๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ ๋ฌธ์์ด ํน์ ์์ด์ ํ๋์ ์ ์๋ก ์นํํ๋ ค๊ณ ํ๋ค. ๊ฐ๋จํ๊ฒ๋ ์์ด์ ๊ฐ์ ๋ชจ๋ ๋ํ ์๋ ์๋ค. ํด์ ํจ์์ ์ ์์์ ์ ํํ ๋ฒ์์ ์ถ๋ ฅ์ ๊ฐ์ ธ์ผ ํ๋ค๊ณ ํ์ผ๋๊น ์ ๋นํ ํฐ ์ M์ผ๋ก ๋๋ ์ฃผ์. ์ง์! ํด์ ํจ์๊ฐ ์์ฑ๋์๋ค. ์ด๋ฅผ ์์์ผ๋ก ํํํ๋ฉด ์๋์ ๊ฐ๋ค.
โH=∑i=0l−1aimodM
โํด์ ํจ์์ ์ ๋ ฅ์ผ๋ก ๋ค์ด์ฌ ์ ์๋ ๋ฌธ์์ด์ ์ข ๋ฅ๋ ๋ฌดํํ์ง๋ง ์ถ๋ ฅ ๋ฒ์๋ ์ ํด์ ธ์๋ค. ๋ค๋ค ๋น๋๊ธฐ ์ง์ ์๋ฆฌ์ ๋ํด์๋ ํ ๋ฒ์ฏค ๋ค์ด๋ดค์ ๊ฒ์ด๋ค. ๊ทธ ์๋ฆฌ์ ์ํ๋ฉด ์๋ก ๋ค๋ฅธ ๋ฌธ์์ด์ด๋๋ผ๋ ๋์ผํ ํด์ ๊ฐ์ ๊ฐ์ง ์ ์๋ค. ์ด๋ฅผ ํด์ ์ถฉ๋์ด๋ผ๊ณ ํ๋๋ฐ, ์ข์ ํด์ ํจ์๋ ์ต๋ํ ์ถฉ๋์ด ์ ๊ฒ ์ผ์ด๋์ผ ํ๋ค. ์์์ ์ ์ํ ํด์ ํจ์๋ ์ํ๋ฒณ์ ์์๋ง ๋ฐ๊ฟ๋ ์ถฉ๋์ด ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ๋์ ํด์ ํจ์์ด๋ค. ๊ทธ๋ฌ๋๊น ์กฐ๊ธ ๋ ๊ฐ์ ํด๋ณด์.
์ด๋ป๊ฒ ํ๋ฉด ์์๊ฐ ๋ฌ๋ผ์ก์๋ ์ถ๋ ฅ๊ฐ๋ ๋ฌ๋ผ์ง๊ฒ ํ ์ ์์๊น? ๋จธ๋ฆฌ๋ฅผ ๊ตด๋ฆฌ๋ฉด ์์ด์ ๊ฐ ํญ๋ง๋ค ๊ณ ์ ํ ๊ณ์๋ฅผ ๋ถ์ฌํ๋ฉด ๋๋ค๋ ์์ด๋์ด๋ฅผ ์๊ฐํด๋ณผ ์ ์๋ค. ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ ํญ์ ๋ฒํธ์ ํด๋นํ๋ ๋งํผ ํน์ ํ ์ซ์๋ฅผ ๊ฑฐ๋ญ์ ๊ณฑํด์ ๊ณฑํด์ค ๋ค์ ๋ํ๋ ๊ฒ์ด ์๋ค. ์ด๋ฅผ ์์์ผ๋ก ํํํ๋ฉด ์๋์ ๊ฐ๋ค.
โH=∑i=0l−1airimodM
โ๋ณดํต r๊ณผ M์ ์๋ก์์ธ ์ซ์๋ก ์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ง์ ์ ํ๋ผ๊ณ ํ๋ฉด ํ๋คํ ๋๊น r์ ๊ฐ์ 26๋ณด๋ค ํฐ ์์์ธ 31๋ก ํ๊ณ M์ ๊ฐ์ 1234567891(๋๋๊ฒ๋ ์์์ด๋ค!!)๋ก ํ์.
์ด์ ์ฌ๋ฌ๋ถ์ด ํ ์ผ์ ์ ์์ ํตํด ์ฃผ์ด์ง ๋ฌธ์์ด์ ํด์ ๊ฐ์ ๊ณ์ฐํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํจ์๋ ๊ฐ๋จํด ๋ณด์ฌ๋ ์์ฃผ ์ฐ์ด๋๊น ๊ธฐ์ตํด๋๋ค๊ฐ ์ ์จ๋จน๋๋ก ํ์.
์ ๋ ฅ
์ฒซ ์ค์๋ ๋ฌธ์์ด์ ๊ธธ์ด L์ด ๋ค์ด์จ๋ค. ๋์งธ ์ค์๋ ์๋ฌธ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ด ๋ค์ด์จ๋ค.
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๋ฌธ์์ด์ ๋ชจ๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ๊ตฌ์ฑ๋์ด ์๋ค.
์ถ๋ ฅ
๋ฌธ์ ์์ ์ฃผ์ด์ง ํด์ํจ์์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฌธ์์ด์ ์ฌ์ฉํด ๊ณ์ฐํ ํด์ ๊ฐ์ ์ ์๋ก ์ถ๋ ฅํ๋ค.
Small (50์ )
- 1 ≤ L ≤ 5
Large (50์ )
- 1 ≤ L ≤ 50
ํ์ด
๋ฌธ์ ๊ฐ ์์ฒญ ๊ธธ๊ณ ๋ณต์กํ๊ธด ํ์ง๋ง ๋ง์ ๊ตฌํ์ ์ฝ๋ค
๋์ .. 100์ ๋ง์ผ๋ ค๊ณ .. ๋ฒ์ ์ด๊ณผ ์๋๋ ค๊ณ ......
m์ ๋๋๊ณ ๋๋๊ณ ๋๋๊ณ ๋๋ด๋ค..
๊ทธ๋ ๊ฒ ํด๋ int๋ฉด ์๋๋ค. long long ์จ์ผํจ
// https://whkakrkr.tistory.com
#include <iostream>
using namespace std;
int main () {
int n;
string s;
cin >> n >> s;
long long ans = 0;
long long r = 1, m = 1234567891;
for(int i=0; i<n; i++) {
ans += ((s[i] - 'a' + 1) * r) % m;
ans %= m;
r *= 31;
r %= m;
}
cout << ans;
return 0;
}
'๐ BOJ > Class 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 18110๋ฒ: solved.ac (Silver IV) (0) | 2024.11.08 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1085๋ฒ: ์ง์ฌ๊ฐํ์์ ํ์ถ (0) | 2023.04.06 |
[BOJ][C++] ๋ฐฑ์ค 108282๋ฒ: ์คํ (0) | 2023.03.15 |
[BOJ][C++] ๋ฐฑ์ค 11650๋ฒ: ์ขํ ์ ๋ ฌํ๊ธฐ (0) | 2023.03.13 |
[BOJ][C++] ๋ฐฑ์ค 1697๋ฒ: ์จ๋ฐ๊ผญ์ง (0) | 2023.02.28 |