Pagini recente » Cod sursa (job #3218673) | Cod sursa (job #3289157) | Cod sursa (job #540965) | Cod sursa (job #144998) | Cod sursa (job #819559)
Cod sursa(job #819559)
#include <fstream>
#include <string>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
const int N=1000005;
char s[N];
int pi[N];
int main()
{
int n,m,k,i,max;
in>>m;
while(m--)
{
in>>s+1;
k=0;
pi[1]=0;
for(i=2;s[i]!='\0';i++)
{
while(s[k+1]!=s[i] && k>0)
k=pi[k];
if(s[k+1]==s[i])
k++;
pi[i]=k;
}
n=i-1;
max=0;
for(i=1;i<=n;i++)
{
if(i%(i-pi[i])==0 && pi[i]!=0)
if(i>max)
max=i;
}
out<<max<<"\n";
}
return 0;
}