Pagini recente » Cod sursa (job #1965951) | Cod sursa (job #914905) | Cod sursa (job #2606167) | Cod sursa (job #3264581) | Cod sursa (job #2724796)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
const int N =1e6;
char v[N+2];
int lps[N+2];
int main()
{
int t;
in>>t;
for(int i=0; i<t; ++i)
{
in>>(v+1);
int n = strlen(v+1);
int k=2,len=0;
lps[1] = 0;
int rez=0;
while(k<=n)
{
while(len>0 && v[len+1]!=v[k])
len = lps[len-1];
if(v[k]==v[len+1])
{
++len;
lps[k]=len;
}
else
{
lps[k]=0;
}
if(len>0 && k%(k-len)==0)
{
rez = max(rez,k);
}
++k;
}
out<<rez<<'\n';
}
return 0;
}