Pagini recente » Cod sursa (job #1632968) | Cod sursa (job #956514) | Cod sursa (job #2836979) | Cod sursa (job #1444848) | Cod sursa (job #1571143)
#include<fstream>
#include<string.h>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
int T,l,q,m,p[1000001];
char s[1000001];
int main(){
in>>T;
while(T--){
in>>s+1;
l=strlen(s+1);
q=0;m=0;
for(int i=2;i<=l;++i)
{
while(q && s[i]!=s[q+1]) q=p[q];
if(s[i]==s[q+1]) ++q;
p[i]=q;
}
for(int i=l;i;--i)
if(p[i] && i%(i-p[i])==0){
m=i;break;
}
out<<m<<'\n';
}
return 0;
}