Pagini recente » Cod sursa (job #2128973) | Cod sursa (job #930004) | Cod sursa (job #770154) | Cod sursa (job #1556361) | Cod sursa (job #183182)
Cod sursa(job #183182)
#include<stdio.h>
int t;
char c[1000010];
int pi[1000010],maxpi;
void calc_pi()
{
int k=0,i;
maxpi=0;
pi[1]=0;
for(i=2; c[i]!='\0'; i++)
{
while((k>0)&&(c[k+1]!=c[i]))
k=pi[k];
if(c[i]==c[k+1])
k++;
pi[i]=k;
if(pi[i]!=0)
{
if(pi[i]%(i-pi[i])==0)
maxpi=i;
}
}
//for(i=1; (c[i]!='\n')&&(c[i]!='\0'); i++)
// printf("%d ",pi[i]);
//printf("\n");
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int i;
scanf("%d\n",&t);
for(i=0; i<t; i++)
{
fgets(c+1,1000010,stdin);
calc_pi();
printf("%d\n",maxpi);
}
return 0;
}