Pagini recente » Cod sursa (job #203588) | Cod sursa (job #1060171) | Cod sursa (job #2510099) | Cod sursa (job #847381) | Cod sursa (job #2989838)
#include <bits/stdc++.h>
using namespace std;
fstream fin("prefix.in");
ofstream fout("prefix.out");
int t;
int main(){
fin >> t;
while(t--){
string s;
fin >> s;
int n = s.size();
s = "*" + s;
vector<int> p(n + 1);
int k = 0;
p[1] = 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 maxi = 0;
for(int i = 1; i <= n; i++){
int idk = i - p[i];
if(p[i] && i % idk == 0)
maxi = max(maxi, i);
}
fout << maxi << '\n';
}
}