Pagini recente » Borderou de evaluare (job #726731) | Borderou de evaluare (job #1640246) | Borderou de evaluare (job #2952011) | Borderou de evaluare (job #1001408) | Cod sursa (job #1988953)
#include <iostream>
#include <fstream>
#define Nmax 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int T,pi[Nmax];
string s;
int main()
{
fin>>T;
for(int t=1;t<=T;t++)
{
int mmax=0,ok=1;
fin>>s;
s.push_back('a');
for(int i=s.size()-1;i>=1;i--)s[i]=s[i-1];
s[0]=' ';
for(int i=1;i<s.size();i++)pi[i]=0;
int q=0;
pi[1]=0;
for(int i=2;i<s.size();i++)
{
while(q && s[q+1]!=s[i])q=pi[q];
if(s[q+1]==s[i])q++;
pi[i]=q;
if(pi[i]!=0 && i%(i-pi[i])==0 && ok==1)
if(i>mmax)mmax=i;
}
fout<<mmax<<'\n';
}
return 0;
}