Pagini recente » Cod sursa (job #1458639) | Cod sursa (job #1700087) | Cod sursa (job #2123890) | Cod sursa (job #2645057) | Cod sursa (job #2307671)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int L=1000000;
int pi[L+1];
char sir[L+1];
int t;
void prefix_function(int l)
{
int k=0;
pi[1]=0;
for(int q=2; q<=l; ++q)
{
while(k>0 && sir[q]!=sir[k+1]) k=pi[k];
if(sir[k+1]==sir[q]) ++k;
pi[q]=k;
}
}
int main()
{
fin>>t;
while(t--)
{
fin>>(sir+1);
int l=strlen(sir+1);
prefix_function(l);
int sol=0;
for(int i=l; i>=1; --i)
{
if(pi[i]>0 && i%(i-pi[i])==0)
{
sol=i;
break;
}
}
fout<<sol<<"\n";
}
return 0;
}