Pagini recente » Cod sursa (job #146820) | Cod sursa (job #3132209) | Cod sursa (job #1451580) | Cod sursa (job #549130) | Cod sursa (job #1323104)
#include<fstream>
using namespace std;
ifstream fin( "prefix.in" );
ofstream fout( "prefix.out" );
const int nmax = 1000000;
int pi[ nmax + 1 ];
string s;
int main() {
int q;
fin >> q;
while ( q -- ) {
int ans = 0;
fin >> s;
s = "$" + s;
pi[ 1 ] = 0;
for( int i = 2; i < ( int )s.size(); ++ 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;
if ( i % (i - pi[ i ]) == 0 ) {
ans = i;
}
} else {
pi[ i ] = 0;
}
}
fout << ans << "\n";
}
fin.close();
fout.close();
return 0;
}