Pagini recente » Cod sursa (job #773009) | Cod sursa (job #859114) | Cod sursa (job #1925951) | Cod sursa (job #1700189) | Cod sursa (job #1029299)
#include <cstdio>
#include <cstring>
using namespace std;
char s[1000010];
int v[1000010];
int lim,t,i,k,sol;
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
scanf("%d",&t);
for(;t;t--)
{
scanf("%s\n",s+1);
v[1]=0;
k=0;
lim=strlen(s+1);
for(i=2;i<=lim;i++)
{
while(k && s[k+1]!=s[i]) k=v[k];
if(s[k+1]==s[i]) k++;
v[i]=k;
}
sol=0;
for(i=lim;i>1;i--)
{
if(v[i] && i%(i-v[i])==0)
{
sol=i;
break;
}
}
printf("%d\n",sol);
}
fclose(stdin);fclose(stdout);
return 0;
}