题目看错见祖宗系列
题目的意思是给你一个\(w\)元的红包,第\(i\)个抢的人的钱数是从0到剩下的钱中随机的一个数。然后叫你求第\(k\)个人抢到钱的期望。
显然答案就是\(\frac{w}{2^k}\)。套上有理数取膜的模板即可求到答案了。
注意:这里的\(2^k\)不能用1左移,毕竟\(k\)辣么大。\(k\)不是小于10啊!看清题目!
代码:
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
#define ll long long
const ll MOD = 1e9 + 7;
ll w, n, k;
ll pow_mod(ll x, ll y, ll z)
{
ll ans = 1; x %= z;
while(y)
{
if(y & 1) ans = ans * x % z;
x = x * x % z;
y >>= 1;
}
return ans % z;
}
ll inv(ll a, ll p)
{
return pow_mod(a, p - 2, p);
}
int main()
{
cin >> w >> n >> k;
cout << w * inv(pow_mod(2, k, MOD), MOD) % MOD << endl;
return 0;
}