Pagini recente » Cod sursa (job #1727302) | Cod sursa (job #884939) | Cod sursa (job #1630841) | Cod sursa (job #1834809) | Cod sursa (job #308414)
Cod sursa(job #308414)
#include<stdio.h>
#include<string.h>
#define MAX 1000001
#define FOR_c(i,a) for(long i=1;i<=a;i++)
#define FOR_d(i,a) for(long i=a;i>=1;i--)
#define r_str(sir) fgets(sir,MAX,stdin)
#define w(a) printf("%ld\n",a)
char s[MAX];
long p[MAX],t,d;
void pref()
{p[0]=-1;p[1]=0;
FOR_c(i,d)
{long k=i-1;
while(k>0&&s[i-1]!=s[p[k]])
k=p[k];
p[i]=p[k]+1;}
}
int main()
{freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%ld",&t);
r_str(s);
FOR_c(i,t)
{r_str(s);
s[strlen(s)-1]=NULL;
d=strlen(s);
pref();
FOR_d(l,d)
if(l%(l-p[l])==0)
if(p[l])
break;
w(l);}
return 0;}