Pagini recente » Cod sursa (job #1958720) | Cod sursa (job #1131758) | Cod sursa (job #814628) | Cod sursa (job #2597811) | Cod sursa (job #2453111)
#include <fstream>
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.get (c);
n=0;
while (c!='\n')
{
a[++n]=c;
b[n]=0;
in.get (c);
}
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++;
}
}
for (j=n;j>=2;--j)
{
if (b[j]!=0&&j%(j-b[j])==0)
{
rez=j;
break;
}
}
out<<rez<<'\n';
}
return 0;
}