塵箱/코드 삽질

백준 15829 - 모듈러 연산

태양왕 해킹 (14세) 2021. 4. 20. 01:36
#include <iostream>
#include <cstring>
using namespace std;
int main() {
	int n;
	cin >> n;
	long long res = 0, s = 1;
	string str;
	cin >> str;
	for (int i = 0; i < str.size(); i++) {
		//(a + b) mod n = ((a mod n_[ⓐ에서 res < 1234567891 즉 해줄 필요 X]) + (b mod n_[str.at * s < 1234567891])) mod n_[ⓑ]
		//(a * b) mod n = ((a mod n_[str.at < 1234567891]) *_[ⓐ에서 s곱] (b mod n_[ⓒ])) mod n_[ⓑ]
		//res += ((long long)str.at(i) - 96) * sqr(31, i);
		//= res = (res + str.at - 96) * s
		res += ((long long)str.at(i) - 96) * s; //ⓐ
		res %= 1234567891; //ⓑ
		s = (s * 31) % 1234567891; //ⓒ
	}
	cout << res << endl;
}