Pagini recente » Cod sursa (job #1358823) | Cod sursa (job #584363) | Cod sursa (job #1591596) | Cod sursa (job #402759) | Cod sursa (job #2550913)
#include <fstream>
#include <cstring>
#define N 1000001
using namespace std;
char v[N];
int urm[N];
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int main()
{
int t,i,j,k,n,sol;
cin>>t;cin.get();
for(i=1;i<=t;i++)
{
cin.getline(v+1,N);
n=strlen(v+1);
urm[0]=0; k=0;
sol=0;
for(j=2;v[j];++j)
{
while(k>0 && v[j]!=v[k+1])
k=urm[k];
if(v[j]==v[k+1])
++k;
urm[j]=k;
if(urm[j] != 0 && j % (j - urm[j]) == 0)
sol = j;
}
cout<<sol<<"\n";
}
return 0;
}