Pagini recente » Cod sursa (job #942984) | Cod sursa (job #2670847) | Cod sursa (job #310380) | Cod sursa (job #2318314) | Cod sursa (job #758360)
Cod sursa(job #758360)
#include<fstream>
#include<string>
using namespace std;
int n,m,l,next[1000005];
string a;
void make_prefix()
{
int k=0,i;
next[1]=0;
for(i=2;i<=l;++i)
{
while(k && a[k+1]!=a[i])k=next[k];
if(a[k+1]==a[i])++k;
next[i]=k;
}
}
int main(void)
{
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string aux; int i,j,mx;
fin>>n; getline(fin,a);
for(i=1;i<=n;++i)
{
getline(fin,a);
l=a.length();
aux=a[l-1]; a.append(aux);
for(j=l;j>0;--j)a[j]=a[j-1];
make_prefix();
mx=0;
for(j=l;j>=1;--j)
if(next[j] && (j%(j-next[j]))==0)
{
mx=j;
break;
}
fout<<mx<<'\n';
}
return 0;
}