Pagini recente » Cod sursa (job #3352947) | Cod sursa (job #3340669) | Cod sursa (job #3352089) | Cod sursa (job #3336075) | Cod sursa (job #3334089)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int p=1372, mod=10663;
int pp[500001];
int a[1000001];
int s[1000001];
char x[1000001];
int main()
{ int i,n,m,sb,sa,nr=0,poz=0,j,l,maxim=0;
pp[0]=1;
for (i=1;i<=1000;i++)
pp[i]=(pp[i-1]*p)%mod;
f>>n;
for (i=1;i<=n;i++){ maxim=0;
f>>x;
m=strlen(x);
for(j=0;j<=m;j++)
a[j+1]=x[j]-'0';
s[1]=a[1];
for (j=2;j<=m;j++)
{
s[j]=(s[j-1]*p+a[j])%mod;
}
for(l=1;l<=m/2;l++)
{ int fr=1;
for (j = l + 1; j <= m; j += l)
{
sa=(s[j+l-1]-s[j-1]*pp[l]%mod + mod)%mod;
if(sa==s[l])
fr++;
else break;
}
if(fr*l>maxim && fr>1)
maxim=fr*l;
}
g<<maxim<<endl;
}
return 0;
}