P9690 [GDCPC2023] A-Programming Contest 题解

· · 题解

P9690 题解

题目意思:

这题的大概意思就是程序设计比赛每年一次,其中有 n 年不举办,请问从 y _ 1 年到 y _ 2 年一共举行了几次程序设计大赛。

思路:

通过计算我们会发现,想要求 y _ 1 年到 y _ 2 年之间有多少年,公式为 y _ 2 - y _ 1 + 1,其实公式在样例解释里就可以看到,接着我们把不在 y _ 1 和 y _ 2 区间内的时间去掉,算出有几个暂停年份在区间内,用刚才算出的总年数减去它,即可得到正确答案!

代码:

#include<bits/stdc++.h>
using namespace std;
long long t;
long long a[1000001],n,x,y; 
int main(){
    cin>>t;
    for(int i=1;i<=t;i++){
        cin>>x;
        cin>>n;
        memset(a,0,sizeof a);
        for(int j=1;j<=n;j++){
            cin>>a[j];
        }
        cin>>y;
        int cnt=0;//计数
        for(int j=1;j<=n;j++){
            if(a[j]>y||a[j]<x){//不在区间内
                cnt++;//增加
            }
        }
        n=n-cnt;//算出在区间内的
        cout<<y-x+1-n<<endl;//输出,别忘换行
    }
    return 0;
}

这道题就结束啦!