Pagini recente » Cod sursa (job #2162297) | Monitorul de evaluare | Cod sursa (job #1515066) | Cod sursa (job #1763040) | Cod sursa (job #333844)
Cod sursa(job #333844)
#include<string.h>
#include<fstream.h>
char a[10002];
int u[10002],n,i,m,max;
void prefix()
{ u[1]=0;
int k=0;
for(int q=2;q<=m;q++)
{
while(a[q]!=a[k+1]&&k>0)
k=u[k];
if(a[q]==a[k+1])
k++;
u[q]=k;
if(u[q]>0&&q%(q-k)==0&&q>max)
max=q;
}
}
int main()
{
ifstream f("prefix.in");
ofstream g("prefix.out");
f>>n;
for(i=1;i<=n;i++)
{
max=0;
f>>a[i];
m=strlen(a)-1;
for(int j=m;j>=0;j--)
a[j+1]=a[j];
a[0]=' ';
m++;
prefix();
if(m>1)
g<<max<<"\n";
else
g<<0<<"\n";
}
return 0;
}