Pagini recente » Cod sursa (job #3136003) | Cod sursa (job #3321071) | Cod sursa (job #3333189) | Cod sursa (job #3327307) | Cod sursa (job #3333726)
//prefix.cpp
#include<bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int p=91, mod=10663;
int x,t,maxim=0,pp[1000001],s[1000001],k,rez,cs,cd,nr,rezcscd,l=0,lungime;
char a[1000001];
int main()
{
f>>t;
pp[0]=1;
for(x=1;x<=1000000;x++)
pp[x]=(pp[x-1]*p)%mod;
for(x=1;x<=t;x++)
{
f>>a;
lungime=strlen(a);
maxim=0;
s[1]=a[0]-'0';
for(k=2;k<=lungime;k++)
{s[k]=(s[k-1]*p+(a[k-1]-'0'))%mod;}
for(k=1;k<=lungime/2;k++)
{
rez=s[k];
cs=k+1;
cd=2*k;
nr=1;
rezcscd=(s[cd]-(s[cs-1]*pp[k])%mod+mod)%mod;
while(rez==rezcscd&&cd<=lungime)
{
nr++;
cs+=k;
cd+=k;
rezcscd=(s[cd]-(s[cs-1]*pp[k])%mod+mod)%mod;
}
if(nr>1)
{
l=k*nr;
if(l>maxim)
maxim=l;
}
}
g<<maxim<<endl;
}
f.close();
g.close();
return 0;
}