挺简单一个概率题,想了好久推不出公式,太菜了,发自内心的。
题意:
给你一个[1, n]的区间, 让你在这个区间内再选两个区间(区间长度可以为零),区间端点必须为整数,问两个区间相交的概率。输出分子 * (分母mod 1e9 + 7的逆元);
分析:
先求不相交的概率:决定不相交的条件是右区间的左边点 > 左区间的右端点。枚举左区间的右端点即可。
另熟悉快速幂求逆元模板
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll mod = 1e9 + 7;
ll n;
ll qpow(ll a, ll n)
{
ll res = 1;
while(n)
{
if(n & 1) res = res * a % mod;
n >>= 1;
a = a * a % mod;
}
return res;
}
int main()
{
while(cin >> n)
{
cout << (n + 1) * qpow(2 * n, mod - 2) % mod << endl;
}
}