Pagini recente » Cod sursa (job #3283607) | Cod sursa (job #3171728) | Cod sursa (job #3265587) | Cod sursa (job #3264645) | Cod sursa (job #3293239)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string s;
int prefix[1000005];
void genprefix()
{
int i,j;
//fout<<prefix[0]<<' ';
for(i=1;i<s.size();++i)
{
j=prefix[i-1];
while(j>0 && s[j]!=s[i])
j=prefix[j-1];
if(s[j]==s[i])
++j;
prefix[i]=j;
//fout<<prefix[i]<<' ';
}
}
int main()
{
int i,n,ans,j;
fin>>n;
for(i=1;i<=n;++i)
{
fin>>s;
genprefix();
ans=0;
for(j=1;j<s.size();++j)
{
if((j+1)%(j+1-prefix[j])==0 && prefix[j]!=0)
{
ans=j+1;
}
}
fout<<ans<<'\n';
}
return 0;
}