Pagini recente » Cod sursa (job #3276012) | Cod sursa (job #1467950) | Cod sursa (job #3005164) | Cod sursa (job #2984902) | Cod sursa (job #2513265)
#include <fstream>
#include <algorithm>
#include <cstring>
#define NMAX 1000005
using namespace std;
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int T, lcp[NMAX], ans;
char str[NMAX];
int LCP()
{
int lg = strlen(str);
int i, j;
ans = 0;
lcp[0] = 0;
i = 0;
j = 1;
while(j < lg){
if(str[j] == str[i]){
i++;
lcp[j] = i;
j++;
}
else{
if(i != 0){
i = lcp[i - 1];
}
else{
lcp[j] = 0;
j++;
}
}
if(i != 0 && j % (j - i) == 0)
ans = j;
}
return ans;
}
int main()
{
cin >> T;
cin.get();
for(int i = 0; i < T; i++){
cin.getline(str,NMAX);
memset(lcp,0,sizeof(lcp));
cout << LCP() << "\n";
}
return 0;
}