Pagini recente » Cod sursa (job #2271030) | Cod sursa (job #573546) | Cod sursa (job #83171) | Cod sursa (job #420788) | Cod sursa (job #2884793)
#include <iostream>
#include <fstream>
#pragma GCC optimize("Ofast")
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int N = 1e6;
int kmp[N + 1];
void calc_kmp(string s, int n){
kmp[1] = 0;
for(int i = 2; i <= n; i++){
kmp[i] = 0;
int l = kmp[i - 1];
while(l > 0 && s[l + 1] != s[i])
l = kmp[l];
l == 0 ? kmp[i] = (s[1] == s[i]) : kmp[i] = l + 1;
}
}
void solve(){
string s;
fin >> s;
int n = (int)s.size();
s = "$" + s;
calc_kmp(s, n);
int ans = 0;
for(int period = 1; period <= n; period++)
if(kmp[period] > 0 && period % (period - kmp[period]) == 0)
ans = period;
fout << ans << '\n';
}
int main(){
int T;
fin >> T;
while(T--)
solve();
return 0;
}