2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin (概率公式+快速幂)

探讨了一枚正面向上概率为q/p的不均匀硬币,在进行k次抛掷后,出现正面次数为偶数的概率计算方法。通过快速幂运算及逆元求解,实现了高效准确的概率计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



题意:一枚不均匀的硬币,正面向上的概率是q/p,问抛k次之后向上的次数为偶数的概率是多少。

输出的概率是整数,是把概率变成分数取模(逆元)得到的。

思路:

度娘神了,下面的例子正好可以用于本题,把最后的结果化成一个分数的形式就可以快速幂了。

点击打开链接


#include <bits/stdc++.h>
int MOD=1e9+7;
using namespace std;
typedef long long LL;
LL quickpow(LL m,LL n)
{
    LL b=1;
    m%=MOD;
    while(n>0)
    {
        if(n&1)b=(b*m)%MOD;
        n=n>>1;
        m=(m*m)%MOD;
    }return b;
}
int main()
{
    LL  p,q,k;
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld%lld",&p,&q,&k);
        LL ans=(quickpow(p,k)+quickpow(p-2*q,k))%MOD;
        LL temp=quickpow(p,k);
        ans=(ans*quickpow(2,MOD-2))%MOD;
        ans=(ans*quickpow(temp,MOD-2))%MOD;
        printf("%lld\n",ans);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值