Pagini recente » Cod sursa (job #735995) | Cod sursa (job #1587403) | Cod sursa (job #346437) | Cod sursa (job #184736) | Cod sursa (job #1888748)
#include <cstring>
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
#define lim 1000005
int n, pref[lim], maxp;
char x[lim];
int main()
{
fin >> n;
fin.getline(x, lim);
while (n--)
{
memset(pref, 0, sizeof(pref));
maxp=0;
fin.getline(x, lim);
int l=strlen(x);
int q=0;
for (int i=1; i<l; ++i)
{
while (q!=0 && x[q+1]!=x[i])
q=pref[q];
if (x[q+1] == x[i]) ++q;
pref[i] = q;
if (pref[i] != 0 && (i + 1) % ((i + 1) - pref[i]) == 0)
maxp = i + 1;
}
fout<<maxp<<'\n';
}
fin.close();
fout.close();
}