Pagini recente » Cod sursa (job #3289775) | Cod sursa (job #1511637) | Cod sursa (job #2721734) | Cod sursa (job #2399153) | Cod sursa (job #562131)
Cod sursa(job #562131)
#include<fstream>
#include<cstring>
#define NMAX 1000000
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 N;
for(in>>N;N;N--)
{
in>>A+1;
NA=strlen(A+1);
make_prefix();
}
return 0;
}