Pagini recente » Cod sursa (job #1104288) | Cod sursa (job #1295667) | Cod sursa (job #2282238) | Cod sursa (job #233783) | Cod sursa (job #841104)
Cod sursa(job #841104)
#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\n",&t);
for(;t;t--)
{
gets(S+1);
n=strlen(S+1);
printf("%d\n",prefix());
}
return 0;
}