Pagini recente » Cod sursa (job #2718984) | Cod sursa (job #2072168) | Istoria paginii runda/moisil_9/clasament | Cod sursa (job #184508) | Cod sursa (job #1094849)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char s[1000002];
int pi[1000002],fr[1000002];
int n,maxv,k,t;
int main()
{
fin>>t;
for (;t; --t)
{
fin>>(s+1);
n = strlen(s+1);
pi[1] = 0;
fr[1] = 1;
k = 0;
maxv = 0;
for (int i=2; i<=n; ++i)
{
while (s[i]!=s[k+1] && k != 0)
k = pi[k];
if (s[i]==s[k+1])
++k;
pi[i] = k;
if (k!=0 && i/(i-k)*(i-k)==i)
maxv = i;
}
fout<<maxv<<"\n";
}
}