Pagini recente » Cod sursa (job #3037937) | Cod sursa (job #245784) | Cod sursa (job #374296) | Cod sursa (job #2074938) | Cod sursa (job #2367576)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int N=1000009;
int n,t;
int f[N];
char a[N];
void buildfailure()
{
f[0]=f[1]=0;
int i=2,j=0;
for(;;)
{
if(i==n+1)
break;
if(a[i]==a[j+1])
{
f[i]=j+1;
j=f[i];
i++;
}
else
{
if(j)
j=f[j];
else
{
f[i]=j;
i++;
}
}
}
}
void solve()
{
buildfailure();
int ans=0;
for(int i=1;i<=n;i++)
{
if(i%(i-f[i])==0&&f[i])
ans=max(ans,i);
}
fout<<ans<<'\n';
}
int main()
{
fin>>t;
while(t)
{
t--;
fin>>a+1;
n=strlen(a+1);
solve();
}
return 0;
}