Pagini recente » Cod sursa (job #2897559) | Cod sursa (job #2884716) | Cod sursa (job #2304716) | Cod sursa (job #1526062) | Cod sursa (job #2123959)
#include <fstream>
#include <cstring>
#define nmax 1000002
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char s[nmax];
char t[nmax];
int p[nmax];
int main()
{
int n;
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>s;
strcpy(t,s);
s[0]=' ';
s[1]=NULL;
strcat(s,t);
int lg=strlen(s);
p[1]=0;
int q=0;
for(int i=2;i<lg;i++)
{
while(q&&s[q+1]!=s[i])
{
q=p[q];
}
if(s[q+1]==s[i])
{
q++;
}
p[i]=q;
}
int k;
for(k=lg-1;k>0;k--)
{
int re=k-p[k];
if(k%(k-p[k])==0&&p[k]>0){
break;
}
}
fout<<k<<"\n";
}
return 0;
}