Pagini recente » Cod sursa (job #2963175) | Cod sursa (job #423487) | Cod sursa (job #912802) | Cod sursa (job #1018679) | Cod sursa (job #1461)
Cod sursa(job #1461)
#include <cstdio>
#include <string.h>
#define Lmax 1000001
char sir[Lmax];
int pref[Lmax],i,j,n;
void calcpref()
{
int m=strlen(sir),k=0,q,i;
pref[1]=0;
for (q=2;q<=m;q++)
{
while (k>0&&sir[k]!=sir[q-1])
k=pref[k];
if (sir[k]==sir[q-1])
k++;
pref[q]=k;
}
}
void solve()
{
int i,max=0;
for (i=strlen(sir);i>=1;i--)
if ( pref[i] > 0 )
if (i % (i-pref[i]) == 0 )
{
max=i;
break;
}
printf("%d\n",max);
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&n);
for (i=1;i<=n;i++)
{
scanf("%s\n",&sir);
calcpref();
solve();
}
return 0;
}