Pagini recente » Cod sursa (job #1178236) | Cod sursa (job #2761457) | Cod sursa (job #2708010) | Cod sursa (job #762118) | Cod sursa (job #588881)
Cod sursa(job #588881)
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
#define Nmax 2000002
char l[Nmax],v[Nmax];
int S1,S2,next[Nmax],K,rez[1234],r,ras,maxi;
void make()
{
int k=0;
next[1]=0;
for(int x=2;x<=S1;++x)
{
while(k>=1&&v[k+1]!=v[x]) k=next[k];
if(v[k+1]==v[x]) ++k;//,printf("%c %c\n",v[k],v[x]);
// printf("%d %d\n",k+1,x);
next[x]=k;
if(x-next[x]!=x)
if(x%(x-next[x])==0)
{
maxi=x;
}
}
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&K);
while(K--)
{
maxi=0;
scanf("%s",v+1);
S1=strlen(v+1);
make();
printf("%d\n",maxi);
}
make();
}