Pagini recente » Cod sursa (job #1652856) | Cod sursa (job #412424) | Cod sursa (job #311769) | Cod sursa (job #1668864) | Cod sursa (job #2933168)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e6;
int kmp[NMAX];
void calc_kmp( const string& s ) {
int n = s.size();
// cout << "0 ";
for ( int i = 1; i < n; i ++ ) {
int x = kmp[i - 1];
while ( x > 0 && s[i] != s[x] ) {
x = kmp[x - 1];
}
if ( s[i] == s[x] ) kmp[i] = x + 1;
else kmp[i] = 0;
// cout << kmp[i] << ' ';
}
}
int main() {
ifstream fin( "prefix.in" );
ofstream fout( "prefix.out" );
int n = 1;
string s;
fin >> n;
for ( int i = 1; i <= n; i ++ ) {
fin >> s;
calc_kmp( s );
int ans = 0;
for ( int i = 1; i <= s.size(); i ++ ) {
if ( kmp[i - 1] && i % ( i - kmp[i - 1] ) == 0 ) ans = max( ans, i );
}
fout << ans << '\n';
}
return 0;
}