题目: 传送门
思路: 通过题目给的 Note 我们会发现,每两个 1 之间所有的间隔都能被切开 ,所以我们从这个思路出发,这就是个简单的组合数问题。
int main() {
int n;
cin>>n;
int now = -1;
int flag =0;
for(int i=0;i<n;i++) {
int a;
cin>>a;
if(a==0) continue;
flag = 1; // 判断是否有 1 ;
if(now==-1) { // 表示如果前面没有 1 ,即这是第一个 出现的 1.
now = i; // 记录当前 1 的位置。
continue;
}
else { // 如果前面有 1 ,说明出现了一个 左右都是 1 的区间,进行计算。
ans *= i-now;
now = i;
}
}
if(flag == 1) cout<<ans<<endl;
else {
cout<<"0"<<endl;
}
return 0;
}