Cod sursa(job #342865)

Utilizator ionutz32Ilie Ionut ionutz32 Data 23 august 2009 23:07:08
Problema Prefix Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
#include <string.h>
char s[1000005];
int pi[1000005],t,contor,a,b,k,i;
int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    scanf("%d\n",&t);
    for (contor=1;contor<=t;++contor)
    {
        gets(s+1);
        pi[1]=0;
        k=0;a=0;
	for (i=2;i<=strlen(s+1);++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;    
    }