Pagini recente » Cod sursa (job #2724780) | Cod sursa (job #2615852) | Cod sursa (job #1422713) | Cod sursa (job #2457000) | Cod sursa (job #2916051)
#include <iostream>
#include <fstream>
#include <cstring>
#define LMAX 1000005
using namespace std;
ifstream fi("prefix.in");
ofstream fo("prefix.out");
int T;
int LPS[LMAX];
void Solve(char txt[],int &S)
{
S=0;
bool var=false;
int len=0;
LPS[0]=0;
int i=1;
int inQ;
while(i<strlen(txt))
{
if(txt[i]==txt[len])
{
len++;
LPS[i]=len;
if(var==false)
{
if(len*2==i+1)
{
var=true;
inQ=len;
}
}if(var==true)
{
if((i+1)%inQ==0)
S=i+1;
}
i++;
}else
{
var=false;
if(len!=0)
len=LPS[len-1];
else
{
LPS[i]=0;
i++;
}
}
}
}
int main()
{
fi>>T;
for(int test=1;test<=T;test++)
{
char txt[LMAX];
fi>>txt;
int S;
Solve(txt,S);
fo<<S<<"\n";
}
return 0;
}