Pagini recente » Cod sursa (job #2222026) | Cod sursa (job #268231) | Cod sursa (job #1437386) | Cod sursa (job #1563559)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int pi[1000000];
char s[1000100];
int mx, k, n;
int main()
{
freopen("prefix.in", "rt", stdin);
freopen("prefix.out", "wt", stdout);
bool enter, ok;
int pr, dif;
int T; scanf("%d\n", &T);
for(int o = 1; o <= T; o ++) {
gets(s + 1); n = strlen(s + 1);
mx = 0; k = 0;
for(int i = 2; i <= n; i ++) {
while(k && s[i] != s[k + 1]) k = pi[k];
if(s[i] == s[k + 1]) k ++;
pi[i] = k;
}
for(int i = n; i >= 1; i --) {
if(pi[i] && (i % (i - pi[i])) == 0) {
mx = i; break;
}
}
cout << mx << "\n";
}
return 0;
}