Pagini recente » Cod sursa (job #928635) | Cod sursa (job #1679111) | Cod sursa (job #2235026) | Cod sursa (job #3148237) | Cod sursa (job #3250033)
#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;
}
void solve(){
string s;
fin>>s;
int ans=0;
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';
}
}
int main(){
int t;
fin>>t;
while(t--){
solve();
}
}