Pagini recente » Cod sursa (job #286780) | Cod sursa (job #177875) | Cod sursa (job #1782879) | Cod sursa (job #1374289) | Cod sursa (job #1197225)
#include<stdio.h>
#include<string.h>
using namespace std;
const int N=1000001;
int t;
int v[N];
char c[N];
void f(char c[],int n)
{
int i; int k=-1; int max=0;
v[0]=0;
for(i=1; i<n; i++)
{
while (k>-1 && c[k+1] != c[i])
k=v[k]-1;
if (c[k+1] == c[i])
++k;
v[i]=k+1;
}
for(i=n-1;i>=1;i--)
{
if (v[i] != 0 && (i+1)%(i+1-v[i]) == 0)
{
max=i+1;
break;
}
}
printf("%d\n",max);
}
void solve()
{
int i;int j;int n;
for(i=1;i<=t;i++)
{
scanf("%s\n",c);
n=strlen(c);
f(c,n);
}
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&t);
solve();
return 0;
}