分析:
首先对于k,可以一直删除k的倍数,直到遇到1, 可以贪心从小到大枚举每一个数,统计删去所有0所在位置时的总代价。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int _;
cin>>_;
while(_--)
{
int n;
cin>>n;
string s;
cin>>s;
ll ans=0;
unordered_map<int,int> m;
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j+=i)
{
if(m[j-1]) continue;
if(s[j-1]=='0')
{
ans+=i;
m[j-1]=1;
}
else break;
}
}
cout<<ans<<'\n';
}
}