Pagini recente » Rating Alex Negura (ALexdn) | Profil Tdc2006 | Istoria paginii utilizator/ruslanrcw | Statistici Stana Adriana Teodora (adrianastana) | Cod sursa (job #2322433)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
int t,n,pi[1000005];
char a[1000005];
void KMP()
{
int i,lc=0,l=0;
for(i=2; i<=n; i++)
{
while(lc>0 && a[i]!=a[lc+1])
{
lc=pi[lc];
}
if(a[i]==a[lc+1])
lc++;
pi[i]=lc;
if(i%(i-pi[i])==0 && pi[i]!=0)
l=max(l,i);
}
out<<l<<'\n';
/*
lc=0;
for(i=1; i<m; i++)
{
while(lc>0 && a[i]!=c[lc+1])
{
lc=pi[lc];
}
if(a[i]==c[lc+1])
lc++;
if(lc==strlen(c)-1)
{
nr++;
}
}
*/
}
int main()
{
int i;
in>>t;
for(i=1; i<=t; i++)
{
in>>(a+1);
n=strlen(a+1);
KMP();
}
return 0;
}