Pagini recente » Cod sursa (job #1137913) | Cod sursa (job #1361589) | Cod sursa (job #2217760) | Cod sursa (job #2349029) | Cod sursa (job #3250030)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
vector<int> prefix_function(string s) {
int n = (int)s.length();
vector<int> pi(n);
for (int i=1;i<n; i++) {
int j=pi[i-1];
while(j>0 and s[i] != s[j]){
j=pi[j-1];
}
if(s[i] == s[j]){
j++;
}
pi[i]=j;
}
return pi;
}
int main(){
int t, ans=0;
fin>>t;
while(t--){
string s;
fin>>s;
vector<int> kmp=prefix_function(s+'#');
for(int i=1;i<kmp.size();i++){
if(kmp[i] and (i+1)%(i+1-kmp[i])==0){
ans=i;
}
}
if(ans==0){
fout<<0<<'\n';
}else{
fout<<ans+1<<'\n';
}
}
}