Pagini recente » Cod sursa (job #2426351) | Cod sursa (job #1263888) | Cod sursa (job #2645284) | Cod sursa (job #969335) | Cod sursa (job #1716785)
#include <cstdio>
#include<string.h>
#define MAX 1000000
using namespace std;
char s[MAX+2];
int pi[MAX+1];
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
int pr=0, t, n, k;
scanf("%d\n", &t);
for(int a=1;a<=t;++a)
{
pr=0;
gets(s+1);
n=strlen(s+1);
pi[1]=0;
k=0;
for(int i=2;i<=n;++i)
{
while(k && s[k+1]!=s[i])
k=pi[k];
if(s[k+1]==s[i])
++k;
pi[i]=k;
}
int f=0;
for(int i=n;i>1 && (!f);--i)
if(!(i % (i-pi[i])) && pi[i]!=0 && (2*pi[i]>=i))
f=1, pr=i;
printf("%d\n", pr);
}
return 0;
}