#快速幂,概率#洛谷 5104 红包发红包

题目

假如现在有 w w w元,那么你抢红包能抢到的钱就是 [ 0 ∼ w ] [0\sim w] [0w]等概率均匀随机出的一个数 x x x
现在红包发了一个 w w w元的红包,有 n n n个人来抢。那么请问第 k k k个人期望抢到多少钱?


分析

首先等概率的话那么数学期望应该就是 w 2 \frac{w}{2} 2w,然后 k k k次就是 w 2 k \frac{w}{2^k} 2kw,所以说快速幂求解


代码

#include 
using namespace std;
typedef long long ll;
const ll mod=1000000007;
ll ans,n;
inline ll ksm(ll x,ll y){
    ll ans=1;
    for (;y;y>>=1,x=x*x%mod)
        if (y&1) ans=ans*x%mod;
    return ans;
}
signed main(){
    scanf("%lld%*lld%lld",&ans,&n);
    ans=ans*ksm(ksm(2,n%(mod-1)),mod-2)%mod;
    return !printf("%lld",ans);
} 

你可能感兴趣的:(位运算,倍增,RMQ,概率及数学期望)