Pagini recente » Cod sursa (job #519836) | Cod sursa (job #1845157) | Cod sursa (job #102071) | Cod sursa (job #2583941) | Cod sursa (job #1495327)
#include <cstring>
#include <cstdio>
#define NMAX 1000005
using namespace std;
int pi[1000005];
char c[NMAX];
int main()
{
freopen("prefix.in" , "r" , stdin);
freopen("prefix.out" , "w" , stdout);
short int T;
scanf("%d\n" , &T);
while(T--) {
gets(c + 1);
int n = strlen(c + 1);
pi[1] = 0;
int k = 0;
for(int i = 2 ; i <= n ; ++i) {
while(k>0 && c[i]!=c[k + 1]) k=pi[k];
if(c[i]==c[k + 1]) ++k;
pi[i]=k;
}
bool ok=1;
for(int i=n ; i>=1 ; --i){
if(pi[i]!=0 && i%(i-pi[i])==0){
printf("%d\n",i);
ok=0;
break;
}
}
if(ok) printf("0\n");
}
return 0;
}