Pagini recente » Cod sursa (job #2848240) | Cod sursa (job #1496992) | Cod sursa (job #1364647) | Cod sursa (job #2452980) | Cod sursa (job #2988547)
#include <bits/stdc++.h>
using namespace std;
int t;
int main(){
cin.tie(0)->sync_with_stdio(0);
ifstream fin("prefix.in");
ofstream fout("prefix.out");
fin >> t;
while(t--){
string s;
fin >> s;
int n = s.size();
s = "^" + s;
vector<int> p(n + 1);
int k = 0;
for(int i = 2; i <= n; i++){
while(k > 0 && s[k + 1] != s[i]){
k = p[k];
}
if(s[k + 1] == s[i]){
k++;
}
p[i] = k;
}
int ans = 0;
for(int i = 1; i <= n; i++){
int d = i - p[i];
if(p[i] && i % d == 0){
ans = max(ans, i);
}
}
fout << ans << '\n';
}
}