Pagini recente » Cod sursa (job #2286230) | Cod sursa (job #339413) | Cod sursa (job #2333699) | Cod sursa (job #2522670) | Cod sursa (job #2150781)
#include <bits/stdc++.h>
using namespace std;
int nrt,l,n,phi1[1000005],k,i,poz;
char a[1000005];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&nrt);
for(l=1;l<=nrt;l++)
{
gets(a+1);
n=strlen(a+1);
k=0;
phi1[1]=0;
for(i=2;i<=n;i++)
{
while(k>0&&a[k+1]!=a[i])
k=phi1[k];
if(a[k+1]==a[i])k++;
phi1[i]=k;
}
for(i=1;i<=n;i++)
{
if(phi1[i]>0&&i%(i-phi1[i])==0)poz=i;
}
printf("%d",poz);
/// for(i=1;i<=n;i++)
/// printf("%d ",phi1[i]);
printf("\n");
}
return 0;
}