Cod sursa(job #31400)

Utilizator pocaituDavid si Goliat pocaitu Data 15 martie 2007 22:47:39
Problema Prefix Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include<fstream.h>
#include<string.h>
#define nmax 1000003


char s[nmax];
int pref[nmax];


void prefix()
{long i,k;
 pref[1]=0;
 pref[0]=-1;
 for(i=2;i<=strlen(s);i++)
   {k=i-1;
	while(s[i-1]!=s[pref[k]]&&k>0)
	   k=pref[k];

	pref[i]=pref[k]+1;


	}
 }



int main()
{long t,i,j;
 ifstream f("prefix.in");
 ofstream g("prefix.out");
 f>>t;
 for(i=1;i<=t;i++)
  {f>>s;
   prefix();
   for(j=strlen(s);j>0;j--)
	 if(!(j%(j-pref[j]))&&pref[j])
		break;
   g<<j<<"\n";
   }
 g.close();

 return 0;
 }