Pagini recente » Cod sursa (job #1946858) | Cod sursa (job #451619) | Cod sursa (job #2028849) | Cod sursa (job #1290954) | Cod sursa (job #1335444)
#include <fstream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
const int NMAX= 1000000;
ifstream in( "prefix.in" );
ofstream out( "prefix.out" );
string s;
int pi[NMAX+1];
int main()
{
int T;
in >> T;
for( int t= 1; t<=T; ++t )
{
in >> s;
s= "$"+s;
int N= (int)s.size();
pi[1]= 0;
for( int i= 2; i<N; ++i )
{
int r= pi[i-1];
while ( r!= 0 && s[r+1]!= s[i] )
{
r= pi[r];
}
if ( s[r+1]==s[i] )
{
pi[i]= r+1;
}
else
{
pi[i] = 0;
}
}
int ans= 0;
for( int i= N-1; i>0; --i )
{
if ( pi[i]>0 && i%( i-pi[i] )==0 )
{
ans= i;
break;
}
}
out << ans << '\n';
}
return 0;
}