Cod sursa(job #392274)

Utilizator vicenzo_cnuStan Alexandru Dan vicenzo_cnu Data 7 februarie 2010 06:56:10
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
#include<string.h>
#define Nmax 1000005
char A[Nmax];
int urm[Nmax],n,t;

int prefix()
{int q=0,i,sol=0;
  for(i=2,urm[1]=0;i<=n;i++)
  {	while(A[q+1]!=A[i] && q)
          q=urm[q];
        if(A[q+1]==A[i])
          q++;
        urm[i]=q;
        if(q && i%(i-q)==0)
        sol=i;
        
        }
    return sol;
    }
    
    int main()
    {freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    char c;
    scanf("%d",&t);
        int i,j;
      for(i=1;i<=t;i++)
      {
        scanf("%s",A);
        n=strlen(A);
        for(j=n;j;j--)
        A[j]=A[j-1];
        A[0]=' ';
        printf("%d\n",prefix());
        }
    fclose(stdin);
    fclose(stdout);
    return 0; 
    }