Pagini recente » Cod sursa (job #3328409) | Cod sursa (job #758083) | Cod sursa (job #82830) | Monitorul de evaluare | Cod sursa (job #3333633)
#include "bits/stdc++.h"
using namespace std;
ifstream f ("prefix.in");
ofstream g ("prefix.out");
long long a[1000002],s[1000002],pp[1000002];
int main ()
{
long long t,p1,mod,x,n,y,max1,stop,stop1,l,nr,nr1,z,sa,sb;
char a[1000002];
f>>t;p1=1013;
mod=999979;
for (x=1;x<=t;x++)
{
f>>a;
n=strlen(a);
s[1]=a[0]-'a'+1;
for (y=0;y<n;y++)
{
s[y+1]=(s[y]*p1+(a[y]-'a'+1))%mod;
}
pp[0]=1;
for (y=1;y<=n;y++)
{
pp[y]=(pp[y-1]*p1)%mod;
}
max1=0;
for (l=1;l<=n;l++)
{
nr=0;nr1=0;stop=0;
for (z=1;z<=n-l+1 && stop==0;z+=l)
{
sa=s[l];
sb=(s[z+l-1]-(s[z-1]*pp[l])%mod+mod)%mod;
if (sa==sb) {nr++;nr1+=l;}
else stop=1;
}
if (nr>1) {max1=max(max1,nr1);}
}
g<<max1<<endl;
for (y=1;y<=n;y++)
s[y]=0;
}
f.close ();
g.close ();
return 0;
}