Pagini recente » Cod sursa (job #604063) | Cod sursa (job #1021968) | Cod sursa (job #3154402) | Cod sursa (job #2653253) | Cod sursa (job #1957137)
#include <iostream>
#include <fstream>
#include <cstring>
#include <string.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int NMax=1000005;
int T,P[NMax],q,N;
char S[NMax];
int main()
{
fin>>T;
for(int i=1;i<=T;++i)
{
fin>>(S+1);
N=strlen(S+1);
int q=0, Sol=0;
for(int j=2;j<=N;++j)
{
while(q && S[q+1]!=S[j])
{
q=P[q];
}
if(S[q+1]==S[j])
{
q++;
}
P[j]=q;
if(q && j%(j-q)==0)
{
Sol=j;
}
}
fout<<Sol<<"\n";
}
return 0;
}