Pagini recente » Cod sursa (job #1134219) | Cod sursa (job #161065) | Cod sursa (job #1953899) | Cod sursa (job #723971) | Cod sursa (job #292549)
Cod sursa(job #292549)
#include<fstream.h>
#include<string.h>
#define nx 1000005
char A[nx],B[nx];
int n,m;
int pi[nx],max;
void make_prefix()
{
int i,k=0;max=0;
for (i=2,pi[1]=0;i<=n;++i)
{
while (k && A[k+1]!=A[i])
k=pi[k];
if (A[k+1]==A[i])
++k;
pi[i]=k;
if (k && !(i%(i-k)) && i>max)
max=i;
}
}
int main()
{
int t,i;
ifstream be ("prefix.in");
ofstream ki ("prefix.out");
be>>t;
for (;t;--t)
{
be>>A;
n=strlen(A);
for (i=n;i;--i)
A[i]=A[i-1];
A[0]=' ';
make_prefix();
ki<<max<<'\n';
}
ki.close();
return 0;
}