Pagini recente » Cod sursa (job #1826186) | Cod sursa (job #1858854) | Cod sursa (job #60346) | Cod sursa (job #2734615) | Cod sursa (job #733515)
Cod sursa(job #733515)
#include <fstream>
#include <cstring>
#define dim 1000007
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char v[dim];
int pi[dim],sol;
int n;
void read()
{
sol=0;
char c;
fin>>v;
}
void make_prefix()
{
int i, q=-1;
pi[0]=-1;
int n=strlen(v)-1;
for(i=1;i<=n;++i)
{
while(q>=0 && v[q+1]!=v[i])
q=pi[q];
if(v[q+1]==v[i])
++q;
pi[i]=q;
if(pi[i]>=0 && ((i+1)%(i-pi[i]))==0)
sol=i+1;
}
fout<<sol <<'\n';
}
int main()
{
int t;
fin>>t;fin.get();
for(;t;--t)
{
read();
make_prefix();
}
return 0;
}