题解:P6312 [PA2018] Palindrom

题目大意:

输入一个字符串,判断它是否回文。


因为内存很小,所以要一个一个读入字符。

判断一个字符串是否回文,考虑进行字符串哈希。

Hashs=s1×b1+s1×b2+s2×b2++slen×blenHash_s=s_1×b^1+s_1×b^2+s_2×b^2+⋯+s_{len}×b^{len}

bb 是一个质数,还有一个比它更大的质数 modmod

CODE

#include<cstdio>
const int b = 998244351, mod = 998244353;//数越大,错误概率越小
long long x, y, f = 1;
char c;
int main(){
	cin >> n;
	while((c = getchar()) < 'a');
	for(; c >= 'a'; c = getchar()){
		(f *= b) %= mod;
		(x += f * (c - 'a')) %= mod;
		((y += (c - 'a')) *= b) %= mod;
	}
	puts(x == y ? "TAK" : "NIE");
	return 0;
}

posted on 2024-04-13 08:06  zhangzirui66  阅读(7)  评论(0)    收藏  举报  来源

导航