热闹的啤酒节
描述
啤酒节热闹非凡,在某一个小摊上,有 n 个人正在排队,小星也在队伍中,小星数了数前后的人数,但由于人数太多了,小星只能得到模糊的数字,小星的前面至少有 a 个人在排队,小星的后面最少有x个人在排队,最多有 y 个人在排队.
那么小星现在所在的位置有多少种可能性呢?
输入描述
第一行输入 n,表示排队的总人数
第二行输入 a ,x,y,表示小星前面最少的人数,后面最少和最多的人数
输出描述
输出小星的位置一共有多少种可能性
样例输入 1
10
1 1 3
样例输出 1
3
#include <iostream>
using namespace std;
int main() {
int n,a,x,y,z;
cin>>n>>a>>x>>y;
z=y-a+1;
cout<<z;
return 0;
}
首先,要知道他最前能站到哪里,和最后能站到哪里。
#include<bits/stdc++.h>
using namespace std;
int n, a, x, y, zq, zh;
int main(){
cin >> n >> a >> x >> y;
zq = max(a + 1, n - y);
zh = n - x;
cout << zh - zq + 1 << endl;
return 0;
}
这道题目我的想法是求出这个人在这个队伍钟最前的位置以及在队伍中最后可能的位置
最前可能的位置由两个因素决定,一个是前面最少的人数a和后面最多的人数y决定,分别可以求出两个位置,一个是位置a+1,还有一个就是位置n-y,这两数要取较大值,这里记为Z
最后可能位置是由后面最少人数x决定,位置n-x
得到两个位置之后就能够得到可能的范围了:(n-x)-Z+1
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,a,x,y;
cin>>n>>a>>x>>y;
cout<<(n-x)-max(a+1,n-y)+1;
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: