Pagini recente » Cod sursa (job #922504) | Cod sursa (job #1159253) | Cod sursa (job #2215916) | Cod sursa (job #566519) | Cod sursa (job #1004639)
#include<cstdio>
#include<cstring>
using namespace std;
int pi[1000005];
char s[1000005];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int t;
for(scanf("%d\n",&t);t;t--)
{
gets(s+1);int n=strlen(s+1);
int k=0;pi[1]=0;
for(int i=2;i<=n;i++)
{
while(k>0 && s[k+1]!=s[i])
k=pi[k];
if(s[k+1]==s[i]) k++;
pi[i]=k;
}
for(int i=n;i>1;i--)
if(pi[i] && i%(i-pi[i])==0)
{
printf("%d\n",i);
goto END;
}
printf("0\n");
END:;
}
return 0;
}