Pagini recente » Cod sursa (job #3262298) | Cod sursa (job #2479877) | Cod sursa (job #2713358) | Cod sursa (job #844416) | Cod sursa (job #2106254)
#include<cstdio>
#include<cstring>
using namespace std;
int q,i,n,j,poz,k,urmator[1000001];
char s[1000001];
void prefix()
{
k=0;
urmator[1]=0;
for(q=2;q<=strlen(s);q++)
{
while(k>0&&s[q]!=s[k+1])
k=urmator[k];
if(s[q]==s[k+1])
k++;
urmator[q]=k;
}
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&n);
scanf("\n");
for(i=1;i<=n;i++)
{
gets(s+1);
s[0]='*';
scanf("\n");
prefix();
for(j=1;j<=strlen(s);j++)
if(j%(j-urmator[j])==0&&urmator[j]!=0)
poz=j;
printf("%d\n",poz);
}
return 0;
}