Pagini recente » Cod sursa (job #325695) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #2627515) | Cod sursa (job #2576274) | Cod sursa (job #1516970)
#include <iostream>
#include <cstdio>
#define milion 1000100
#include <cstring>
using namespace std;
int pref_max[milion],t,lun,maxl;
char sir[milion];
int rezolv()
{
pref_max[0]=0;
lun=strlen(sir);
int i=0,j=1;
maxl=0;
while (j<lun)
{
pref_max[j]=0;
if (sir[i]!=sir[j])
if (i==0)
++j;
else
i=pref_max[i-1];
else if (sir[i]== sir[j])
{
pref_max[j]=i+1;
++i;
++j;
}
}
for(int m=lun-1; m>0; --m)
if ( pref_max[m] && m+1-pref_max[m] && ((m+1)%(m+1-pref_max[m]))==0)
return m+1;
return 0;
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&t);
for (int l=1;l<=t;++l)
{
scanf("%s",sir);
printf("%d\n" ,rezolv());
}
return 0;
}