Cod sursa(job #1004682)

Utilizator geniucosOncescu Costin geniucos Data 3 octombrie 2013 14:51:54
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<cstdio>
#include<cstring>
using namespace std;
int i,T,n,k,phi[1000009];
char a[1000009];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&T);
while(T)
{
    T--;
    gets(a+1);
    n=strlen(a+1);
    phi[1]=k=0;
    for(i=2;i<=n;i++)
    {
        while(k&&a[k+1]!=a[i]) k=phi[k];
        if(a[k+1]==a[i]) k++;
        phi[i]=k;
    }
    for(i=n;i>=1;i--)
    if(phi[i]&&i%(i-phi[i])==0)
    {
        printf("%d\n",i);
        break;
    }
    if(i==0) printf("0\n");
}
return 0;
}