Pagini recente » Cod sursa (job #1208894) | Cod sursa (job #2741646) | Cod sursa (job #2922390) | Cod sursa (job #1217879) | Cod sursa (job #984960)
Cod sursa(job #984960)
#include<stdio.h>
#include<cstring>
#define maxn 1000005
using namespace std;
int t,n;
int p[maxn];
char s[maxn];
int get_per()
{
int k=0;
p[1]=0;
for(int i=2;i<=n;i++)
{
while(s[k+1]!=s[i] && k>0) k=p[k];
if(s[k+1]==s[i]) k++;
p[i]=k;
}
for(int i=n;i>=2;i--)
if(p[i] && i%(i-p[i])==0)
return i;
return 0;
}
void read()
{
scanf("%d\n",&t);
for(int i=1;i<=t;i++)
{
scanf("%s\n",s+1);
n=strlen(s+1);
memset(p,0,sizeof(p));
printf("%d\n",get_per());
}
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
read();
fclose(stdin);
fclose(stdout);
return 0;
}