本文主要是介绍#快速幂,概率#洛谷 5104 红包发红包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
假如现在有 w w w元,那么你抢红包能抢到的钱就是 [ 0 ∼ w ] [0\sim w] [0∼w]等概率均匀随机出的一个数 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 <cstdio>
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);
}
这篇关于#快速幂,概率#洛谷 5104 红包发红包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!