Pagini recente » Sandbox (cutiuţa cu năsip) | Cod sursa (job #669069) | Cod sursa (job #2290914) | Cod sursa (job #345890) | Cod sursa (job #2003911)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char s[1000010];
int T,prefix[1000010],q,LG,sol;
void make_prefix()
{
sol=0;
q=0;
prefix[1]=0;
for(int i=2; i<=LG; i++)
{
while(q>0 && s[q+1]!=s[i])
q=prefix[q];
if(s[q+1]==s[i])
q++;
prefix[i]=q;
if(prefix[i]!=0)
if(i%(i-prefix[i])==0)
sol=i;
}
}
int main()
{
fin>>T;
for(int l=1; l<=T; l++)
{
fin >> (s+1);
LG=strlen(s+1);
s[0]='#';s[LG+1]=0;
make_prefix();
fout<<sol<<'\n';
}
return 0;
}