Pagini recente » Cod sursa (job #281840) | Cod sursa (job #2885079) | Cod sursa (job #2885141) | Cod sursa (job #2677089) | Cod sursa (job #2453114)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
int t,i,j,k,n,b[1000001],rez;
char c,a[1000001];
int main ()
{
in>>t;
in.get (c);
for (i=1;i<=t;++i)
{
in>>a+1;
n=strlen(a+1);
rez=0;
k=1;
for (j=2;j<=n;++j)
{
while (k!=1&&a[j]!=a[k]) k=b[k-1]+1;
if (a[j]==a[k])
{
b[j]=k;
k++;
}
else b[j]=0;
}
for (j=n;j>=2;--j)
{
if (b[j]!=0&&j%(j-b[j])==0)
{
rez=j;
break;
}
}
out<<rez<<'\n';
}
return 0;
}