Pagini recente » Cod sursa (job #2533804) | Cod sursa (job #317519) | Cod sursa (job #195595)
Cod sursa(job #195595)
#include <stdio.h>
#include <string.h>
#define N_Max 10000
int n,sol,t,M,i;
int PI[N_Max];
char SUBSIR[N_Max];
void functie_prefix()
{int q,k,sol=0;
M=strlen(SUBSIR+1);
k=0;
for (q=2;q<=M;q++)
{
while (k>0 && SUBSIR[k+1]!=SUBSIR[q])
k=PI[k];
if (SUBSIR[k+1]==SUBSIR[q]) k++;
PI[q]=k;
if(PI[q])
if (PI[q]%(q-PI[q])==0) sol=q;
}
}
int main()
{
freopen("prefix.in","rt",stdin);
freopen("prefix.out","wt",stdout);
scanf("%d", &t);
while (t)
{
scanf("%s",SUBSIR+1);
functie_prefix();
printf("%d\n", sol);
--t;
}
return 0;
}