Pagini recente » Cod sursa (job #1603390) | Clasament dupa rating | Cod sursa (job #2294920) | Cod sursa (job #1704089) | Cod sursa (job #857598)
Cod sursa(job #857598)
#include<cstdio>
#include<cstring>
char s[1000005];
int p[1000005];
int main (void)
{
freopen ("prefix.in","r",stdin);
#ifdef INFOARENA
freopen ("prefix.out","w",stdout);
#endif
int t;
scanf ("%d ",&t);
while(t--){
gets (s+1);
int n=strlen (s+1);
p[1]=0;
int x=0;
int r=0;
for(int i=2;i<=n;i++){
while(x>0&&s[x+1]!=s[i])
x=p[x];
if(s[x+1]==s[i])
x++;
p[i]=x;
if(p[i]&&i%(i-p[i])==0)
r=i;
}
printf ("%d\n",r);
}
return 0;
}