Pagini recente » Cod sursa (job #2321475) | Cod sursa (job #579487) | Cod sursa (job #1843667) | Cod sursa (job #1496118) | Cod sursa (job #2312614)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int t,n;
string s;
int kmp[1000005];
void make_vector()
{
int where=0;
for(int i=1;i<n;i++)
{
while(s[i]!=s[where] && where!=0)
where=kmp[where-1];
if(s[i]==s[where])
{
kmp[i]=where+1;
where++;
}
}
}
void solve()
{
int ans=0;
for(int i=0;i<n;i++)
if(kmp[i]!=0 && (i+1)%(i+1-kmp[i])==0)
ans=i+1;
fout<<ans<<"\n";
}
int main()
{
fin>>t;
while(t--)
{
fin>>s;
n=(int)s.size();
memset(kmp,0,sizeof kmp);
make_vector();
solve();
}
return 0;
}