Pagini recente » Cod sursa (job #1519511) | Cod sursa (job #2061827) | Cod sursa (job #2116191) | Cod sursa (job #1001813) | Cod sursa (job #2791207)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
#define NMAX 1000005
char s[NMAX];
int nrl, p[NMAX], rez;
void formare_prefixe() {
int i = 0, j = -1;
p[0] = -1;
while (i < nrl) {
while (j >= 0 && s[i] != s[j])
j = p[j];
i++;
j++;
p[i] = j;
if (i % (i - p[i]) == 0 && p[i])
rez = i;
}
}
int main() {
int t;
f >> t;
for (int test = 0; test < t; ++test) {
f >> s;
nrl = strlen(s);
rez = 0;
formare_prefixe();
g << rez << '\n';
}
return 0;
}