P7499 题解

· · 题解

给定区间 [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; } ```