Cod sursa(job #329374)

Utilizator aladinaladin aladinn aladin Data 5 iulie 2009 23:32:02
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
  
 #include <stdio.h>  
   #include <string.h>  
   #define max 1000002  
     
   char s[max];  
   int k,q,sol,n, pi[max], t;  
    
    int main()  
   {  
       freopen("prefix.in", "r", stdin);  
       freopen("prefix.out", "w", stdout);  
       scanf("%d\n", &t);  
       for (; t; t--)  
       {  
           scanf("%s\n", s+1);  
           n=strlen(s+1);  
     
	   k=0;sol=0;  
       pi[1]=0;  
       for (q=2; q<=n; q++)  
       {  
           while (k && s[k+1]!=s[q]) k=pi[k];  
           if (s[k+1]==s[q]) k++;  
           pi[q]=k;  
          if (k && (q%(q-k)==0)) sol=q;  
       }  
           printf("%d\n", sol);  
       }  
       return 0;  
  }