Cod sursa(job #1004981)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 3 octombrie 2013 21:16:33
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<stdio.h>
#include<string.h>
char a[1000005];
unsigned a2[1000005];
int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    unsigned n,i,j,q,t;
    scanf("%u\n",&t);
    for(q=1;q<=t;q++)
    {
gets(a+1);
n=strlen(a+1);
a2[1]=j=0;
for(i=2;i<=n;i++)
{
    while(a[j+1]!=a[i] && j>0)
        {
j=a2[j];
        }
        if(a[j+1]==a[i])
        j++;
        a2[i]=j;
}
for(i=n;i>=1;i--)
    if(i%(i-a2[i])==0 && a2[i]!=0)
{
    printf("%u\n",i);
    break;
}
if(i==0)
    printf("0\n");
    }
return 0;
}