Pagini recente » Cod sursa (job #2559277) | Cod sursa (job #3296701) | Cod sursa (job #2737216) | Cod sursa (job #2510823) | Cod sursa (job #1429722)
#include <cstdio>
#include <cstring>
#define DIM 1048576
using namespace std;
FILE *fin = fopen("prefix.in", "r");
FILE *fout= fopen("prefix.out","w");
int N, P[DIM], T, maxim, i, L; char A[DIM], c;
int main(){
fscanf(fin, "%d", &T);
fscanf(fin, "%c", &c);
for(; T; T--){
fgets(A + 1, DIM, fin);
N = strlen(A + 1);
maxim = 0; L = 0;
for(i = 2; i <= N; i ++){
while(L != 0 && A[i] != A[L+1])
L = P[L];
if(A[i] == A[L+1])
L ++;
P[i] = L;
if(P[i] > 0)
if(i % (i - P[i]) == 0)
maxim = i;
} fprintf(fout, "%d\n", maxim);
}
return 0;
}