Pagini recente » Cod sursa (job #442020) | Cod sursa (job #2468492) | Cod sursa (job #875333) | Cod sursa (job #1101211) | Cod sursa (job #1310275)
#include <fstream>
#include <stdio.h>
#include <cstring>
#define nmax 1005000
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
char s[nmax];
int T;
unsigned pr[nmax];
int main()
{int q = 0, i, N, l;
f >> T;
while(T){
f >> (s + 1);
N = strlen(s + 1);
for(i = 1; i <= N; ++i)
pr[i] = 0;
l = 0;
q = 0;
for(pr[1] = 0, i = 2; i <= N; ++i){
while(q && s[i] != s[q + 1]) q = pr[q];
if(s[i] == s[q + 1]) ++q;
pr[i] = q;
}
for(i = N; i > 0; --i)
if(pr[i] && i % (i - pr[i]) == 0){
l = i;
i = 0;
}
g << l <<'\n';
--T;
}
return 0;
}