Cod sursa(job #1127373)

Utilizator Barcau_EmanuelBarcau Emanuel Barcau_Emanuel Data 27 februarie 2014 12:12:08
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int n,i,T,t,j,k,l,pi[1000003];
char s[1000003],c;

int main()
{
    f>>T;
    while(T--)
    {
        f>>s+1;
        n=strlen(s+1);
        k=t=pi[1]=0;
        for(i=2;i<=n;i++)
          {
            while(k>0&&(s[k+1]!=s[i])) k=pi[k];
            if(s[k+1]==s[i]) k++;
            pi[i]=k;
          }
        for(i=n;i>=1&&!t;--i)
        if(pi[i]&&i-pi[i]!=0&&i%(i-pi[i])==0) t=i,i=0;
        g<<t<<"\n";
    }

    return 0;
}