洛谷 P5104 红包发红包

洛谷 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;
}
原文地址:https://www.cnblogs.com/fusiwei/p/13846083.html