Pagini recente » Cod sursa (job #2576274) | Cod sursa (job #1516970) | Cod sursa (job #326122) | Cod sursa (job #1802163) | Cod sursa (job #1516965)
#include <fstream>
#include <string.h>
using namespace std;
ifstream cin("prefix.in");
ofstream cout("prefix.out");
#define MAXSIR 1000005
int n,nsir,i,j,k;
int pr[MAXSIR];
char aux[10];
char sir[MAXSIR];
int main()
{
cin>>n; cin.getline(aux,10);
for(i=1; i<=n; i++)
{
cin.getline(sir+1,MAXSIR); nsir=strlen(sir+1);
for(j=0; j<=nsir; j++)
pr[j]=0;
k=0;
for(j=2; j<=nsir; j++)
{
while(k && sir[k+1]!=sir[j])
k=pr[k];
if(sir[k+1]==sir[j])
k++;
pr[j]=k;
}
for(j=nsir; j>=2; j--)
if(pr[j] && j%(j-pr[j])==0)
{
cout<<j<<"\n";
break;
}
if(j==1)
cout<<"0\n";
//for(j=1; j<=nsir; j++)
// cout<<pr[j]<<" ";
//cout<<"\n";
}
}