Pagini recente » Cod sursa (job #3271340) | Cod sursa (job #2383791) | Profil funkydvd | Profil funkydvd | Cod sursa (job #2990791)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin ("prefix.in");
ofstream fout("prefix.out");
char S[1000002],x;
int P[1000002];
int a,b,i,sol,L,nr,n,j;
int main ()
{
fin>>n;
for(j=1;j<=n;j++)
{
fin.get();
fin.get(S,1000001);
a=strlen(S);
for(i=a;i>=1;i--)
S[i]=S[i-1];
L=0;
for(i=2;i<=a;i++)
{
P[i]=0;
while(L!=0&&S[i]!=S[L+1])
L=P[L];
if(S[i]==S[L+1])
L++;
P[i]=L;
//fout<<P[i]<<" ";
}
//fout<<"\n";
for(i=a;i>=1;i--)
{
nr=2*P[i]-i;
if(nr>=0)
{
if(nr%(i-P[i])==0)
{
sol=i;
break;
}
}
}
fout<<sol<<"\n";
}
return 0;
}
/**
1
xxxxaxax
**/