Pagini recente » Cod sursa (job #840219) | Cod sursa (job #2629205) | Cod sursa (job #2530611) | Cod sursa (job #2551662) | Cod sursa (job #1495319)
#include <fstream>
#include <cstring>
#include <cstdio>
#define NMAX 1000005
using namespace std;
//ifstream f("prefix.in");
//ofstream g("prefix.out");
int n , m , pi[NMAX] , nr , T;
char c[NMAX];
int main()
{
freopen("prefix.in" , "r" , stdin);
freopen("prefix.out" , "w" , stdout);
scanf("%d" , &T);//f >> T;
while(T--) {
scanf("%s" , c + 1);//f >> c + 1;
n = strlen(c + 1);
//memset(pi , 0 , sizeof(pi));
pi[1] = 0;
for(int i = 2 ; i <= n ; ++i) {
int k = pi[i - 1];
while(k > 0 && c[i] != c[k + 1]) {
k = pi[k];
}
if(c[i] == c[k + 1]) {
pi[i] = k + 1;
}
else{
pi[i] = 0;
}
}
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");//g << sol << '\n';
}
return 0;
}