Pagini recente » Cod sursa (job #2713433) | Cod sursa (job #509555) | Cod sursa (job #1010450) | Cod sursa (job #539241) | Cod sursa (job #2327675)
#include <fstream>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string s;
int n;
const int N=1000000+7;
int pr[N];
void build()
{
pr[0]=0;
int p=1,cur=0;
while(p<n)
{
if(s[p]==s[cur])
{
cur++;
pr[p]=cur;
p++;
}
else
{
if(cur==0)
{
p++;
}
else
{
cur=pr[cur-1];
}
}
}
}
int main()
{
int t; fin>>t;
while(t--)
{
fin>>s;
n=s.size();
for(int i=0;i<=n+10;i++) pr[i]=0;
build();
int res=0;
for(int i=0;i<n;i++)
{
int j=i+1;
//fout<<j<<" : "<<pr[i]<<"\n";
if(j%(j-pr[i])==0 && pr[i])
{
res=j;
}
}
fout<<res<<"\n";
}
return 0;
}
/**
{1}
{1}
{1}
**/