Pagini recente » Cod sursa (job #1518023) | Cod sursa (job #1980480) | Cod sursa (job #3031765) | Cod sursa (job #2892262) | Cod sursa (job #841095)
Cod sursa(job #841095)
#include<cstdio>
#include<cstring>
using namespace std;
const int smax = 1000005;
int t,n,pi[smax];
char S[smax];
int prefix()
{
int q=0,i;
pi[1]=0;
for(i=2;i<=n;i++)
{
while(q>0 && S[q+1]!=S[i]) q=pi[q];
if(S[q+1]==S[i]) q++;
pi[i]=q;
}
for(;i;i--)
if(pi[i] && !(i%(i-pi[i]))) break;
return i;
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&t);
for(;t;t--)
{
fgets(S+1,smax,stdin);
n=strlen(S+1);
printf("%d\n",prefix());
}
return 0;
}