Pagini recente » Cod sursa (job #247822) | Cod sursa (job #196060) | Cod sursa (job #3223115) | Cod sursa (job #3207559) | Cod sursa (job #748588)
Cod sursa(job #748588)
#include <stdio.h>
#include <string.h>
#define NMAX 1000004
char a[NMAX];
int sol;
FILE *g;
inline int maxim(int a, int b)
{ return a>=b?a:b;}
void calc_sol()
{
int v[NMAX];
int i,j=0, n = strlen(a);
a[--n]= 0;
v[0] = 0;
sol = 0;
int x =0;
int last = 1;
for(i=1;i<n;i++)
{
while(j && a[j] != a[i])
j = v[j-1];
if(a[j] == a[i])
++j;
v[i] = j;
}
for(i=n-1;i;--i)
if(v[i] && !((i+1) % (i+1 - v[i])))
{
sol = i+1;
break;
}
// for(i=0;i<n;i++)
// printf("%d ", v[i]);
// printf("\n");
// printf("%d\n",sol);
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int i,j,t;
scanf("%d",&t);
fgets(a,sizeof(a), stdin);
for(i=0;i<t;i++)
{
fgets(a,sizeof(a), stdin);
calc_sol();
printf("%d\n",sol);
}
return 0;
}