Cod sursa(job #456151)

Utilizator emanuela.hallerHaller Emanuela emanuela.haller Data 14 mai 2010 21:39:36
Problema Prefix Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
#include<string.h>

#define MAX 1000002
char s[MAX];
long v[MAX],n;

long prefix()
   {
    long k,q,max=0;
    v[1]=0;
    k=0;
    for(q=2;q<=n;q++)
      {
       while (k>0 && s[k+1]!=s[q]) k=v[k];
       if (s[k+1]==s[q]) k++;
       v[q]=k;
       if (k && q%(q-k)==0) max=q;
      }
      return max;
   }


int main()
  {
   FILE *f=fopen("prefix.in","rt");
   FILE *g=fopen("prefix.out","wt");
   long t,i;
   fscanf(f,"%li\n",&t);
   for(;t;--t)
     {
      fgets(s,MAX,f);
      n=strlen(s)-1;
      for(i=n;i>=1;i--) s[i]=s[i-1];
      s[0]=' ';
      fprintf(g,"%li\n",prefix());
     }
   fclose(f);
   fclose(g);
   return 0;
  }