Pagini recente » Cod sursa (job #1783093) | Cod sursa (job #1111839) | Cod sursa (job #1779013) | Cod sursa (job #1319859) | Cod sursa (job #2759474)
#include <fstream>
#include <string.h>
#define NMAX 1000005
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int questions;
char str[NMAX];
int pi[NMAX];
int main()
{
f >> questions;
while (questions--) {
f >> (str + 1);
pi[1] = 0;
int pre = 0;
int answer = 0;
for (int i = 2; i <= strlen(str + 1); i++) {
while (pre != 0 && str[i] != str[pre + 1]) {
pre = pi[pre];
}
if (str[i] == str[pre + 1])
pre++;
pi[i] = pre;
if (pi[i] != 0 && i % (i - pi[i]) == 0)
answer = i;
}
g << answer << "\n";
}
return 0;
}