Pagini recente » Cod sursa (job #1896283) | Cod sursa (job #2616177) | Cod sursa (job #779158) | Cod sursa (job #1819426) | Cod sursa (job #2057762)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int Nmax = 1000000 + 5;
char cuv[Nmax];
int n, t, p[Nmax], k;
int main()
{
fin >> t;
while(t--)
{
fin >> cuv + 1;
n =strlen(cuv + 1);
p[1] = 0; k = 0;
for(int i = 2;i <= n; ++i)
{
while(k > 0 && cuv[i] != cuv[k + 1])
k = p[k];
if(cuv[i] == cuv[k + 1])++k;
p[i] = k;
}
for(int i = n; i >= 1; --i)
if(i == 1 || (p[i] && (i % (i - p[i]) == 0)))
{
if(i == 1)i--;
fout << i << '\n';
break;
}
}
return 0;
}