Pagini recente » Cod sursa (job #538108) | Cod sursa (job #3190085) | Cod sursa (job #89292) | Cod sursa (job #223993) | Cod sursa (job #3186311)
#include<fstream>
std::ifstream fin("prefix.in");
std::ofstream fout("prefix.out");
int p[1000005];
int getPrefMax(std::string local)
{
long long size=local.size();
int i=0, j=-1;
p[0]=-1;
int max=0;
while(i<size)
{
while(j>=0 && local[i]!=local[j])
j=p[j];
++i;
++j;
p[i]=j;
if(i%(i-p[i])==0 && p[i])
if(i>max)
max=i;
}
return max;
}
void solve()
{
int n;
fin>>n;
for(int index=0; index<n; ++index)
{
std::string local;
fin>>local;
int ans=getPrefMax(local);
fout<<ans<<'\n';
}
}
int main()
{
solve();
return 0;
}