Cod sursa(job #342867)

Utilizator ionutz32Ilie Ionut ionutz32 Data 23 august 2009 23:19:03
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#include <string.h>
#define n 1000005
char s[n];
int pi[n],t,a,b,k,i,m;
int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    scanf("%d\n",&t);
    while (t--)
    {
          gets(s+1);
          pi[1]=0;
          k=0;a=0;m=strlen(s+1);
          for (i=2;i<=m;++i)
          {
              while (k>0 && s[k+1]!=s[i])
                    k=pi[k];
              if (s[k+1]==s[i])
                 k=k+1;
              pi[i]=k;
              if (k>0 && (i%(i-k)==0))
                 a=i;
              }
          printf("%d\n",a);
          }
    return 0;    
    }