CodeForces 617B Chocolate
统计一下 每两个1之间0的个数+1,把这些数字乘起来就可以。
注意两个地方:会爆int,需要开long long。所有数字都是0的时候输出0。
#include<cstdio> #include<cstring> #include<vector> #include<cmath> #include<queue> #include<list> #include<algorithm> using namespace std; const int maxn=100+10; int n; int a[maxn]; vector<long long>v; int main() { scanf("%d",&n); long long ans=0; int first=-1,last=-1; for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=1; i<=n; i++) { if(a[i]) { first=i; break; } } for(int i=n; i>=1; i--) { if(a[i]) { last=i; break; } } if(first!=-1) { v.clear(); long long num=0; for(int i=first; i<=last; i++) { if(a[i]==1) { v.push_back(num+1); num=0; } if(a[i]==0) num++; } } if(v.size()==0) printf("0\n"); else { ans=1; for(int i=0; i<v.size(); i++) ans=ans*v[i]; printf("%lld\n",ans); } return 0; }