Pagini recente » Cod sursa (job #53055) | Cod sursa (job #1370310) | Cod sursa (job #1538354) | Cod sursa (job #27917) | Cod sursa (job #2330219)
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int n,t,i,k,kmp[1000010],len[1000010];
bitset<1000010> per;
string s;
int main()
{
f>>t;
for(;t;t--)
{
f>>s;n=s.size();k=0;
int ans=0;
for(i=2;i<=n;i++)
{
while(k&&s[k]!=s[i-1])
k=kmp[k];
if(s[k]==s[i-1])
k++;
kmp[i]=k;
per[i]=0,len[i]=0;
if(!(i&1))
if(kmp[i]==i/2)
per[i]=1,len[i]=i/2;
if(per[kmp[i]]&&(i-kmp[i])==len[kmp[i]])
per[i]=1,len[i]=len[kmp[i]];
if(per[i])ans=i;
// if(t==5)
// cout<<' '<<i<<' '<<kmp[i]<<' '<<len[i]<<'\n';
}
g<<ans<<'\n';
// for(i=1;i<=n;i++)
// g<<kmp[i]<<' ';
// g<<'\n';
}
return 0;
}