Pagini recente » Cod sursa (job #2576313) | Cod sursa (job #1082447) | Cod sursa (job #2450886) | Cod sursa (job #2974165) | Cod sursa (job #1925810)
#include <cstdio>
#include <cstring>
using namespace std;
int t, pi[1000005];
char a[1000005];
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
scanf("%d", &t);
for(int tr = 1; tr <= t ; ++tr){
scanf("%s", a + 1);
int L = strlen(a + 1);
int q = 0; pi[1] = 0;
for(int i = 2; i <= L ; ++i){
while(q != 0 && a[i] != a[q + 1])
q = pi[q];
if(a[i] == a[q + 1]) ++q;
pi[i] = q;
}
int i = L;
while(i > 0 && !(pi[i] > 0 && i % (i - pi[i]) == 0))
--i;
printf("%d\n", i);
}
return 0;
}