P7499 题解
phigy
·
·
题解
给定区间 [a,b] 和 [c,d] ,求从其中各等概率选择一个整数,和等于 e 的概率。
输出答案乘 (b-a+1)(d-c+1) 的结果 。
所以就是求 $[a,b]$ 和 $[c,d]$ 从中各取一个整数,和等于 $e$ 的方案数 。
就是求 $[a,b]$ 中有几个整数 $x$ 满足 $c\leq e-x\leq d$ 。
$e-x$ 也是整数,而其范围为 $[e-b,e-a]$ 。
只需要求出 $[e-b,e-a]$ 和 $[c,d]$ 交集中整数个数 。
其交集就是 $[max(e-b,c),min(e-a,c)]$ 。
那么答案就是 $min(e-a,c)-max(e-b,c)+1$ 。
但是答案不可能小于 $0$ ,需要特判 。
```cpp
#include <iostream>
using namespace std;
int t;
long long a,b,c,d,e;
int main()
{
int i,j,k;
cin>>t;
while(t--)
{
cin>>a>>b>>c>>d>>e;
cout<<max(min(e-a,d)-max(e-b,c)+1,(long long)0)<<endl;
}
return 0;
}
```