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
");
    else
    {
        ans=1;
        for(int i=0; i<v.size(); i++)
            ans=ans*v[i];
        printf("%lld
",ans);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/zufezzt/p/5156772.html