Pagini recente » Cod sursa (job #876534) | Cod sursa (job #502975) | Cod sursa (job #526476) | Cod sursa (job #2404050) | Cod sursa (job #2460401)
#include <fstream>
int t, kmp[1<<20], n, i, j;
char s[1<<20];
int main() {
std::ifstream f("prefix.in");
std::ofstream o("prefix.out");
f >> t; do {
f >> s;
for(i = 1, j = 0; s[i]; ++i)
if(s[i] == s[j]) kmp[i] = ++j;
else kmp[i] = j = (s[i] == s[0]);
for(--i, j = 0; i > 0; --i) {
if(kmp[i] && (i+1) % (i+1-kmp[i]) == 0) {
j = i+1; break;
}
} (o << j).put('\n');
} while(--t);
}