Pagini recente » Cod sursa (job #2656745) | Diferente pentru implica-te/arhiva-educationala intre reviziile 37 si 36 | Cod sursa (job #2601337) | Cod sursa (job #2252233) | Cod sursa (job #856463)
Cod sursa(job #856463)
#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=2;i<=m;i++)
{
j=c[i-1];
while ((s[i-1]!=s[j]) && (j>0))
j=c[j];
if (s[i-1]==s[j])
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;
}