题解
2025-08-25 14:18:22
发布于:北京
8阅读
0回复
0点赞
思路可能有点抽象
记得开long long,我欢乐赛被坑了一次
#include<bits/stdc++.h>
using namespace std;
long long a[10005],ans = 9e18;
int main(){
string s;
cin>>s;
int j = 1;
for(int i = 0;i < s.size();i++){
if(s[i] == '1'){
a[j++] = i;
}
}
for(int i = 1;i < j;i++){
s[a[i]] = '0';
long long b[10005];
bool flag = (s[0] == '0' ? true : false);
long long num = 0,sum = 1;
for(int k = 0;k < s.size();k++){
if(flag){
if(s[k] == '0') num++;
else{
b[sum++] = num;
num = 0;
flag = false;
}
}
else{
if(s[k] == '0'){
flag = true;
num++;
}
}
}
if(num > 0) b[sum++] = num;
s[a[i]] = '1';
num = 1;
for(int j = 1;j < sum;j++){
num = num * b[j];
}
ans = min(ans,num);
}
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个