Pagini recente » Cod sursa (job #584357) | Cod sursa (job #1975078) | Cod sursa (job #2963360) | Cod sursa (job #1360886) | Cod sursa (job #927391)
Cod sursa(job #927391)
#include<cstdio>
using namespace std;
#define MAX 1000005
int T , N , pi[MAX] , q , best[MAX];
char s[MAX];
bool ok[MAX];
int main()
{
freopen("prefix.in" , "r" , stdin );
freopen("prefix.out" , "w" , stdout);
scanf("%d" , &T);
for(int i = 1 ; i <= T ; ++i )
{
scanf("%s" , s+1);
for(N = 1 ; s[N] ; ++N);
pi[0] = 0;
q = 0;
for(int i = 2 ; i < N ; ++i )
{
while(s[i]!=s[q+1] && q)
q = pi[q];
if(s[i] == s[q+1])
q++;
pi[i] = q;
}
int maxx = 0;
for(int i = 1 ; i < N ; ++i )
if(pi[i] && pi[i]%(i-pi[i])==0)
maxx = i;
printf("%d\n" , maxx );
}
return 0;
}