P11276 第一首歌 题解
约定
对于字符串
思路
首先
若
证明可以考虑
那么我们要求
代码
const int N = 1e6 + 9;
int n;
int fail[N];
char s[N];
void skymaths() {
scanf(" %s", s + 1); n = strlen(s + 1);
int p = 0;
fail[0] = -1;
rep (i, 2, n) {
while (p != -1 && s[p + 1] != s[i]) p = fail[p];
fail[i] = ++p;
}
printf("%s%s\n", s + 1, s + p + 1);
}