Pagini recente » Cod sursa (job #1796932) | Cod sursa (job #1995654) | Cod sursa (job #1023128) | Cod sursa (job #3199268) | Cod sursa (job #1323221)
#include <fstream>
#include <string>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
const int NMAX = 1000000;
int pi[NMAX+2];
int N, T;
string s;
int main() {
in >> T;
for( int t = 0; t < T; ++t ) {
in >> s;
N = (int)s.size();
s = "#" + s;
int Sol = 0;
pi[1] = 0;
for( int i = 2; i <= N; ++i ) {
int K = pi[i-1];
while( K > 0 && s[K+1] != s[i] ) {
K = pi[K];
}
if( s[K+1] == s[i] ) ++ K;
pi[i] = K;
}
for( int i = N; i > 0; --i ) {
if( pi[i] && i%(i-pi[i]) == 0 ) {
Sol = i;
break;
}
}
out << Sol << '\n';
}
return 0;
}