Cod sursa(job #1308887)

Utilizator DjokValeriu Motroi Djok Data 4 ianuarie 2015 20:11:53
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<fstream>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;

int t,i,n,k,prefix[1000005];
string s;

int main()
{
  ifstream cin("prefix.in");
  ofstream cout("prefix.out");

  cin>>t; getline(cin,s);

  while(t--)
  {
    getline(cin,s); n=s.length();
    memset(prefix,0,n+1);

    for(i=1,k=0;i<n;++i)
    {
      while(k>0 && s[i]!=s[k]) k=prefix[k-1];
      if(s[i]==s[k]) ++k;
      prefix[i]=k;
    }
    for(i=n;i>0;--i)
    if(!(i%(i-prefix[i-1])) && prefix[i-1]) cout<<i<<'\n',i=-1;
    if(i==0) cout<<"0\n";
  }

 return 0;
}