Pagini recente » Cod sursa (job #2127825) | Cod sursa (job #2947980) | Cod sursa (job #18801) | Cod sursa (job #2408628) | Cod sursa (job #1711313)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int t,j,i,max1,p,aux[1000005];
char sir[1000005];
int main()
{
f>>t;
f.get();
while(t)
{
f.getline(sir+1,1000004);
max1=0;
j=strlen(sir+1);
p=0;
for(i=2;i<=j;i++)
{
while(p&&sir[p+1]!=sir[i])
p=aux[p];
if(sir[p+1]==sir[i])
p++;
aux[i]=p;
}
bool ok=0;
for(i=j;i>=1&&!ok;i--)
if(aux[i]>0&&i%(i-aux[i])==0)
{
max1=i;
ok=1;
}
g<<max1<<"\n";
t--;
}
return 0;
}