Pagini recente » Cod sursa (job #1935487) | Cod sursa (job #1217092) | Cod sursa (job #2347484) | Cod sursa (job #309813) | Cod sursa (job #308811)
Cod sursa(job #308811)
#include<fstream>
#include<cstring>
#define MaxN 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char A[MaxN];
int pi[MaxN],t,N;
int prefix()
{ int i,q=0,sol=0;
for(i=2,pi[1]=0;i<=N;i++)
{ while(q&&A[i]!=A[q+1])
q=pi[q];
if(A[q+1]==A[i]) q++;
pi[i]=q;
if(q&&i%(i-q)==0) sol=i;
}
return sol;
}
int main()
{ int i;
fin>>t;fin.get();
while(t--)
{ fin.getline(A,MaxN);
N=strlen(A);
for(i=N+1;i>0;i--)A[i]=A[i-1];
A[0]=' ';
fout<<prefix()<<'\n';
for(i=0;i<=N;i++) A[i]='\0';
}
return 0;
}