Cod sursa(job #1517831)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 4 noiembrie 2015 21:48:06
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<cstdio>
#include<cstring>
using namespace std;
char s[1000010];
int prefix[1000010];
int main(){
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    int t,q,n,i,j;
    scanf("%d\n",&t);
    for(q=1;q<=t;q++){
        scanf("%s",s+1);
        n=strlen(s+1);
        i=0;
        for(j=2;j<=n;j++){
            while(i>0&&s[i+1]!=s[j])
                i=prefix[i];
            if(s[i+1]==s[j])
                i++;
            prefix[j]=i;
        }
        for(j=n;j>=1;j--)
            if(prefix[j]>0&&j%(j-prefix[j])==0)
                break;
        printf("%d\n",j);
    }
    return 0;
}