Cod sursa(job #1800159)

Utilizator Valentin0709Datcu George Valentin Valentin0709 Data 7 noiembrie 2016 14:46:29
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
#include<string.h>
using namespace std;

FILE*f=fopen("prefix.in","r");
FILE*g=fopen("prefix.out","w");

int l,t,i,j,k,um[1000005];
char s[1000005];

int main() {

    fscanf(f,"%d",&t);

    for(i=1;i<=t;i++) {
        fscanf(f,"%s",s);
        l=strlen(s);
        k=0; um[1]=0;
        for(j=2;j<=l;j++) {
            while(k>0&&s[k]!=s[j-1]) k=um[k];
            if(s[k]==s[j-1]) k++;
            um[j]=k;
        }
        for(j=l;j>=1;j--) {
            if(um[j]!=0&&(j%(j-um[j])==0)) {
                    fprintf(g,"%d\n",j);
                    break;
            }
            if(j==1) fprintf(g,"%d\n",0);
        }
    }

    fclose(f); fclose(g);

    return 0;
}