Pagini recente » Cod sursa (job #434226) | Cod sursa (job #1426374) | Cod sursa (job #1655086) | Cod sursa (job #830294) | Cod sursa (job #856456)
Cod sursa(job #856456)
#include<fstream>
#include<string>
using namespace std;
string s;
int i,j,k,n,m,c[1000005];
int main()
{
ifstream f("prefix.in");
ofstream g("prefix.out");
f >> n;
for (k=1;k<=n;k++)
{
f >> s;
m=s.length();
for (i=m;i>=1;i--)
s[i]=s[i-1];
for (i=2;i<=m;i++)
{
j=c[i-1];
while ((s[i]!=s[j+1]) && (j>0))
j=c[j];
if (s[i]==s[j+1])
c[i]=j+1;
else c[i]=0;
}
for (i=m;i>=2;i--)
if ((i%(i-c[i])==0) && (c[i]!=0))
{
g << i << "\n";
break;
}
if (i==1)
g << 0 << "\n";
}
return 0;
}