Pagini recente » Cod sursa (job #2538131) | Cod sursa (job #549082) | Cod sursa (job #1227681) | Cod sursa (job #2599434) | Cod sursa (job #362423)
Cod sursa(job #362423)
#include <cstdio>
#define LMAX 1000010
#include <cstring>
int t, pi[LMAX];
char s[LMAX];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&t);
int i, k, r, n;
while (t--)
{
scanf("%s",s);
n=strlen(s);
for (i=n; i>0; i--) s[i]=s[i-1];
k=r=0;
pi[1]=0;
for (i=2; i<=n; i++)
{
while (k && s[k+1]!=s[i]) k=pi[k];
if (s[k+1]==s[i]) k++;
pi[i]=k;
if (k && !(i %(i-k))) r=i;
}
printf("%d\n",r);
}
}