洛谷 P5104 红包发红包
题目背景
红包(redbag)发明了一个抢红包的系统。
题目描述
这个抢红包系统是这样的:假如现在有w元,那么你抢红包能抢到的钱就是[0,w][0,w]等概率均匀随机出的一个实数x。
现在红包发了一个ww元的红包,有nn个人来抢。那么请问第kk个人期望抢到多少钱?
输出mod (10^9+7)mod(109+7)。
输入格式
w,n,kw,n,k
输出格式
第kk个人期望抢到的钱数mod(10^9+7)mod(109+7)
补充:期望可能是分数,关于分数取模,可以问度娘
题解:
实数域期望。
期望的概念其实就是“均值”。所以,假设我们现在有一个10块的红包,第一个人肯定是期望5块,第二个人就是期望两块五,以此类推。
所以答案就是:(frac{w}{2^k}),注意取模和乘逆元的问题。
代码:
#include<cstdio>
#define int long long
using namespace std;
const int mod=1e9+7;
int n,k,w;
int qpow(int a,int b)
{
int ret=1;
while(b)
{
if(b&1)
ret=(ret*a)%mod;
b>>=1;
a=(a*a)%mod;
}
return ret%mod;
}
signed main()
{
scanf("%lld%lld%lld",&w,&n,&k);
int fenmu=qpow(2,k);
int ans=(w*qpow(fenmu,mod-2))%mod;
printf("%lld",ans);
return 0;
}