Pagini recente » Cod sursa (job #1164501) | Cod sursa (job #2915562) | Cod sursa (job #2958067) | Cod sursa (job #455170) | Cod sursa (job #562127)
Cod sursa(job #562127)
#include<fstream>
#include<cstring>
#define NMAX 2000005
using namespace std;
char A[NMAX],B[NMAX];
int NA,NB;
int poz[1020];
int pi[NMAX];
ifstream in("prefix.in");
ofstream out("prefix.out");
inline void make_prefix()
{
int i,q=0,val=0;
for(i=2;i<=NA;i++)
{
while(q && A[q+1]!=A[i])
q=pi[q];
if(A[q+1]==A[i])
q++;
pi[i]=q;
if(q && !(i%(i-q)))
val=i;
}
out<<val<<"\n";
}
int main()
{
int i,q=0,nr=0,N;
in>>N;
for(q=1;q<=N;q++)
{
in>>A+1;
NA=strlen(A+1);
make_prefix();
}
return 0;
}