Cod sursa(job #540788)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 24 februarie 2011 13:22:19
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<fstream.h>
ifstream f("prefix.in");
ofstream g("prefix.out");
char s[1000002],c,nr[5];
int n,t,l[1000002];
void kmp()
{ int i,j,m=0;
  j=0;
  for(i=2;i<=n;i++)
	  {while(j>0&&s[j+1]!=s[i]) j=l[j];
	   if(s[i]==s[j+1]) j++;
	   l[i]=j;
	   if(j && i%(i-j)==0)m=i;
	  }
	  g<<m<<'\n';
}

int main()
{ int k;
  //f>>t>>c;
  f.getline(nr,5);
  t=atoi(nr);
  s[0]='0';
  for(k=0;k<t;k++){
	   f.getline(s+1,1000001);
	   n=strlen(s)-1;
	   kmp();
  }					 
  f.close(); g.close();
  return 0;
}