Pagini recente » Cod sursa (job #3283929) | Cod sursa (job #507971) | Cod sursa (job #1565204) | Cod sursa (job #3226068) | Cod sursa (job #2056621)
#include <fstream>
#include <string.h>
using namespace std;
#define nmax 1000005
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int m,n,i,pi[nmax],k,nr,imax;
char a[nmax],b[nmax];
void prefix()
{
int i,q=0;
for(i=2,pi[1]=0;i<=m;++i)
{
while(q && a[q+1]!=a[i])q=pi[q];
if(a[q+1]==a[i])++q;
pi[i]=q;
if(q && i%(i-q)==0) imax=i;
}
}
int main()
{
fin>>nr;
for(k=1;k<=nr;++k)
{
fin>>a;
imax=0;
m=strlen(a);
for(i=m; i; --i) a[i]=a[i-1]; a[0]=' ';
prefix();
fout<<imax<<'\n';
}
fin.close();fout.close();
return 0;
}