Pagini recente » Cod sursa (job #3348566) | Cod sursa (job #2386196) | Cod sursa (job #3146437) | Cod sursa (job #387510) | Cod sursa (job #3334093)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int p=998244353, mod=1000000007;
long long pp[500001];
int a[1000001];
unsigned long long s[1000001];
char x[1000001];
int main()
{ int i,n,m,nr=0,poz=0,j,l,maxim=0;
unsigned long long x1, x2, xf;
pp[0]=1;
for (i=1;i<=500000;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%mod+a[j])%mod;
}
for(l=1;l<=m/2;l++)
{ int fr=1;
for (j = l + 1; j <= m; j += l)
{
x1 = s[j+l-1];
x2 = s[j-1]*pp[l]%mod;
xf = (x1-x2+mod)%mod;
if(xf==s[l])
fr++;
else break;
}
if(fr*l>maxim && fr>1)
maxim=fr*l;
}
g<<maxim<<endl;
}
return 0;
}