Pagini recente » Cod sursa (job #1330766) | Cod sursa (job #1919920) | Cod sursa (job #1700742) | Cod sursa (job #42259) | Cod sursa (job #1686146)
#include <fstream>
using namespace std;
const int LEN_MAX = 1e6;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char a[LEN_MAX + 5];
int p[LEN_MAX + 5];
int solutie()
{
fin.getline(a + 1, LEN_MAX + 2);
int i = 2;
for (int q = 0; a[i]; ++i)
{
while (q > 0 && a[q + 1] != a[i])
q = p[q];
if (a[q + 1] == a[i])
++q;
p[i] = q;
}
--i;
while (i > 0 && (p[i] == 0 || p[i] % (i - p[i]) != 0))
--i;
return i;
}
int main()
{
int T;
(fin >> T).ignore(1);
while (T--)
fout << solutie() << "\n";
return 0;
}