Pagini recente » Cod sursa (job #1261257) | Cod sursa (job #2709139) | Cod sursa (job #3256146) | Cod sursa (job #1827932) | Cod sursa (job #1197182)
#include <cstdio>
#include <cstring>
const int MAX = 1000100;
using namespace std;
char sir[MAX];
int urm[MAX];
int main()
{
int t;
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&t);
while(t--){
int i;
memset(urm,0,sizeof(urm));
gets(sir+1);
int now=0;
int n=strlen(sir+1);
for(i=2;i<=n;++i){
while(sir[now+1]!=sir[i] and now)now=urm[now];
if(sir[now+1]==sir[i])++now;
urm[i]=now;
}
for(i=n;i>1;--i)
if(urm[i] and i%(i-urm[i])==0)break;
if(i==1)i=0;
printf("%d\n",i);
}
return 0;
}