P9517题解

· · 题解

原题链接

P9517 drink

题目简述

给定一个只包含 01 的序列,求序列中第一个 1 出现的位置到最后一个 1 出现的位置一共有多少个数字。

解题思路

这道题是一道模拟题,只需要依次判断第一个 1 出现的位置和最后一个 1 出现的位置有几个数字即可,不过还有一些小细节,比如序列中没有 1 的情况,这时只需要判断一下,即可通过此题。

参考代码

#include<bits/stdc++.h>
using namespace std;
#define QwQ return 0;
long long n,a[100010],b,c;
int main()
{
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        if(a[i]==1)
            c=i;//统计最后一个1出现的位置
    }
    for(int i=0;i<n;i++)
        if(a[i]==1)
        {
            b=i;//统计第一个1出现的位置
            break;
        }
    if(b==0 && c==0)//注意这里要特判
        cout<<0;
    else
        cout<<c-b+1;//注意这里要加上1
    QwQ;

}