Pagini recente » Cod sursa (job #1139409) | Cod sursa (job #2649389) | Cod sursa (job #1751547) | Cod sursa (job #1719737) | Cod sursa (job #1679036)
#include <fstream>
#include <cstring>
#define NMAX 1000005
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int i, n, nrquiz, pi[NMAX], j, ans, k;
char c[NMAX];
int main()
{
f >> nrquiz;
for (; nrquiz; -- nrquiz)
{
f >> (c + 1);
n = strlen(c + 1);
ans = 0;
k = 0;
memset(pi, 0, sizeof(pi));
for (i = 2; i <= n; ++ i)
{
while (k && c[i] != c[k + 1])
k = pi[k];
if (c[i] == c[k + 1])
k ++;
pi[i] = k;
}
i = n;
for (i = n; i >= 1; -- i)
if (pi[i] != 0 && pi[i] % (i - pi[i]) == 0)
{
ans = i;
break;
}
g << ans << '\n';
}
return 0;
}