Rng HDU - 6574 | 概率 + 快速幂求逆元

挺简单一个概率题,想了好久推不出公式,太菜了,发自内心的。

题意:
给你一个[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;
	}	
}