Pagini recente » Cod sursa (job #2427098) | Cod sursa (job #1591326) | Cod sursa (job #5748) | Cod sursa (job #1586244) | Cod sursa (job #662652)
Cod sursa(job #662652)
#include <cstdio>
#include <cstring>
#define nmax 1000002
using namespace std;
char S[nmax];
int T, n, urm[nmax], Sol;
void citeste(){
scanf("%d\n", &T);
}
void prelucreaza(){
int k = 0;
urm[1] = 0;
for(int i=2; i<=n; ++i){
while (k>0 && S[k+1] != S[i]) k = urm[k];
if (S[k+1] == S[i]) ++k;
urm[i] = k;
}
}
void rezolva(){
for(; T; --T){
scanf("%s", S+1);
n = strlen(S+1);
prelucreaza();
Sol = 0;
for(int i=1; i<=n; ++i){
if (urm[i] > 0 && (i % (i-urm[i]) == 0) )
Sol = i;
}
printf("%d\n", Sol);
}
}
int main(){
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
citeste();
rezolva();
fclose(stdin);
fclose(stdout);
return 0;
}