Cod sursa(job #1517824)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 4 noiembrie 2015 21:39:57
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 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++){
            if(s[i+1]==s[j])
                i++;
            else
                if(s[1]==s[j])
                    i=1;
                else
                    i=0;
            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;
}