Pagini recente » Cod sursa (job #2552538) | Cod sursa (job #2825508) | Cod sursa (job #2929739) | Cod sursa (job #2723269) | Cod sursa (job #517153)
Cod sursa(job #517153)
#include<stdio.h>
#include<string>
using namespace std;
#define dre 1000002
FILE *in=fopen("prefix.in","r"),*out=fopen("prefix.out","w");
char S[dre];
int s,V[dre],lp;
void pref()
{
int i,k=0,iei=0;
lp=0;
memset(V,0,sizeof V);
for(i=2;i<=s;++i)
{
while(k&&S[k+1]!=S[i])
k=V[k];
if(S[k+1]==S[i])
{
++k;
lp=i;
}
V[i]=k;
if(i%(i-k)==0&&k)
iei=i;
}
fprintf(out,"%d\n",iei);
}
int main()
{
int T,t;
S[0]=2;
fscanf(in,"%d",&T);
for(t=1;t<=T;++t)
{
fscanf(in,"%s",&S[1]);
s=strlen(S)-1;
pref();
}
return 0;
}