Pagini recente » Cod sursa (job #2325676) | Cod sursa (job #2465610) | Cod sursa (job #496709) | Cod sursa (job #309178) | Cod sursa (job #2420202)
#include<fstream>
#include<algorithm>
#include<cstring>
using namespace std;
const int NMAX = 1e6+5;
char s[NMAX];
int p[NMAX];
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int main()
{
int N,i,j,T;
cin>>T;
while(T--)
{
cin>>(s+1);
N = strlen(s+1);
p[1] = 1;
int maxim = 0;
for(i = 2 , j = 1 ; i <= N ; ++i)
{
while(j > 1 && s[i] != s[j])
j = p[j-1];
if(s[i] == s[j])
p[i] = ++j;
else
p[i] = 1;
if(p[i] != 1 && (i == p[i] || i % (i - p[i] + 1) == 0) )
maxim = i;
}
}
//for(i = 1 ; i <= N ; ++i)
// cout<<i<<":"<<p[i]<< " " << s[i] <<"\n";
cout<<maxim<<"\n";
}
}