Pagini recente » Cod sursa (job #2768288) | Cod sursa (job #2796113) | Cod sursa (job #3149626) | Cod sursa (job #3280759) | Cod sursa (job #2775190)
#include <fstream>
#include <string>
using namespace std;
ifstream fin( "prefix.in" );
ofstream fout( "prefix.out" );
const int MAXL = (int)1e6 + 5;
int pi[MAXL];
string w;
inline void solve() {
int q = 0, m = w.length(), res = 0;
for ( int i = 2; i <= m; ++i ) {
while ( q > 0 && w[q] != w[i - 1] ) {
q = pi[q];
}
if ( w[q] == w[i - 1] ) {
++q;
}
pi[i] = q;
if ( i % (i - pi[i]) == 0 && pi[i] != 0 ) {
res = i;
}
}
fout << res << "\n";
}
int main() {
int t;
fin >> t;
while ( t-- ) {
fin >> w;
solve();
}
fin.close();
fout.close();
return 0;
}