Pagini recente » Cod sursa (job #1888614) | Cod sursa (job #1971646) | Cod sursa (job #1609477) | Cod sursa (job #48877) | Cod sursa (job #447598)
Cod sursa(job #447598)
#include <cstdio>
#include <cstring>
#define file_in "prefix.in"
#define file_out "prefix.out"
int T,pi[1010000],rez,n;
char s[1010000];
void prefix()
{
int i,k;
memset(pi,0,sizeof(pi));
k=0;
for (i=2;i<=n;++i)
{
while (s[i]!=s[k+1] && k) k=pi[k];
if (s[i]==s[k+1]) k++;
pi[i]=k;
if (k!=0 && i%(i-pi[i])==0) rez=i;
}
}
void citire()
{
int i;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d\n", &T);
while(T--)
{
scanf("%s\n", s+1);
n=strlen(s+1);
prefix();
printf("%d\n", rez);
}
}
int main()
{
citire();
fclose(stdin);
fclose(stdout);
return 0;
}