Cod sursa(job #1443106)

Utilizator adina0822Ciubotaru Adina-Maria adina0822 Data 26 mai 2015 23:11:21
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
using namespace std;
#include<fstream>
#include<string.h>
FILE *f=fopen("prefix.in","r");
FILE *g=fopen("prefix.out","w");

int t,m;
char s[1000002];
int pi[1000002];

void make_prefix()
{
    int i,q=0;
    for(i=2,pi[1]=0;i<=m;i++)
    {
        while(q&&s[i]!=s[q+1])
        q=pi[q];
        if(s[i]==s[q+1])
        q++;
        pi[i]=q;
    }
}

int main ()
{
  int i;
  fscanf(f,"%d",&t);

  while(t--)
  {
      fscanf(f,"%s",s);
      m=strlen(s);
      for(i=m;i>=1;i--)
      s[i]=s[i-1];
      s[0]=' ';
      make_prefix();
      for(i=m; i>=1; i--)
      {
         if(pi[i] && i%(i-pi[i])==0)
         {
            fprintf(g,"%d\n",i);
            i=-1;
         }


      }
      if(i!=-2) fprintf(g,"0\n");
  }

  return 0;

}