Pagini recente » Cod sursa (job #1885836) | Cod sursa (job #2891855) | Cod sursa (job #2897530) | Cod sursa (job #1521197) | Cod sursa (job #1882103)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char str[1000005],prf[1000005];
int main()
{
int i,k,n,p,t,ok;
fin>>t;
while(t--)
{
fin>>(str+1);
n=strlen(str+1);
prf[1]=0;
k=0;
for(i=2;i<=n;i++)
{
while(k>0 &&str[i]!=str[k+1])
{
k=prf[k];
}
if(str[i]==str[k+1]) k++;
prf[i]=k;
}
ok=0;
for(i=n;i>=1;i--)
{
if(prf[i]!=0)
{
p=i-prf[i];
if(prf[i]%p==0)
{
ok=1;
fout<<i<<"\n";
break;
}
}
if(ok==1) break;
}
if(ok==0) fout<<"0\n";
}
}