Pagini recente » Cod sursa (job #83990) | Cod sursa (job #3120787) | Cod sursa (job #1418042) | Cod sursa (job #2068500) | Cod sursa (job #1823972)
#include<bits/stdc++.h>
#define maxN 1000005
using namespace std;
int urm[maxN],m,sol,n;
char s[maxN];
void GetPrefix()
{
int k=0;
urm[1]=0;
for(int i=2;i<=m;i++)
{
while(k>0 && s[i]!=s[k+1]) k=urm[k];
if(s[i]==s[k+1]) k++;
urm[i]=k;
if(k && !(i%(i-k))) sol=i;
}
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("\n");
scanf("%s",s+1);
m=strlen(s+1);
sol=0;
GetPrefix();
printf("%d\n",sol);
}
return 0;
}