Pagini recente » Cod sursa (job #2208136) | Cod sursa (job #1371981) | Cod sursa (job #1582400) | Cod sursa (job #1919386) | Cod sursa (job #308412)
Cod sursa(job #308412)
#include<stdio.h>
#include<string.h>
#define max 1000005
#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(j,d)
if(j%(j-p[j])==0&&p[j])
break;
w(j);}
return 0;}