Cod sursa(job #1340576)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 11 februarie 2015 21:53:42
Problema Prefix Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <cstring>
#define DIM 1000002

using namespace std;

ifstream fin("prefix.in");
ofstream fout("prefix.out");
int T,P[DIM],L,n,sol;
char A[DIM];
int main(){
    fin>>T;
    while(T--){
        fin>>A+1;
        n=strlen(A+1);
        P[1]=0;
        L=0;
        for(int i=2;i<=n;i++){
            while(L!=0 && A[i]!=A[L+1])
                L=P[L];
            if(A[i]==A[L+1])
                L++;
            P[i]=L;
        }
        for(int i=n;i>=1;i--)
            if(P[i]>0 && i%(i-P[i])==0){
                sol=i;
                break;
            }
        fout<<sol<<'\n';
    }
    fin.close();fout.close();
    return 0;
}