why this solution is giving TLE i have done almost same thing as everyone else problem link
ll change(string &s,ll d){
vector<ll> vec(d);
ll maxi_ind=0;
ll maxi=0;
for(int i=0;i<(ll)s.size();i++){
if(s[i]=='1'){
vec[i%d]++;
}
if(vec[i%d]>maxi){
maxi=vec[i%d];
maxi_ind=i%d;
}
}
ll ans=0;
for(int i=0;i<(ll)s.size();i++){
if(i-maxi_ind>=0 and (i-maxi_ind)%d==0){
if(s[i]=='0') ans++;
}else if(s[i]=='1') ans++;
}
return ans;
}
string solve(){
ll n;
cin>>n;
string s;
cin>>s;
vector<ll> root;
ll num=s.size();
for(ll i=1;i*i<=num;i++){
if(num%i==0){
root.push_back(i);
root.push_back(num/i);
}
}
ll ans=INF;
for(auto x:root){
ans=min(ans,change(s,x));
}
ret(ans);
ret("");
}
why this solution is giving TLE i have done almost same thing as everyone else problem link