Pagini recente » Cod sursa (job #2644423) | Profil StefanMilitaru | Cod sursa (job #733229) | Cod sursa (job #508823)
Cod sursa(job #508823)
#include <fstream>
#include <iostream>
#include <cstring>
#define nmax 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int n, m;
char sir[nmax];
int pi[nmax];
int main()
{
int i, j, k, rez;
fin >> m;
fin.get();
for(i=1; i<=m; ++i)
{
fin.getline(sir, nmax);
for(n=0; sir[n] >= 'a' && sir[n] <='z'; ++n);
for(int j=n; j; --j) sir[j] = sir[j-1];
sir[0] = ' ';
for(j=0; j<=nmax; ++j) pi[j]=0;
rez = 0;
k = 0;
pi[0] = 0;
for(j=2; j<=n; ++j)
{
while(k && sir[k+1]!=sir[j])
k = pi[k];
if(sir[k+1]==sir[j])
++k;
pi[j]=k;
if(k && j%(j-k)==0)
rez = j;
}
fout << rez << "\n";
}
return 0;
}