博客
关于我
牛牛和牛可乐的赌约
阅读量:119 次
发布时间:2019-02-27

本文共 1145 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要计算牛牛投掷骰子时输的概率。牛牛投掷m次n面的骰子,每次投掷都必须出现n点,才能赢。输的概率是至少有一次投掷不是n点。我们可以通过快速幂和模逆元来高效地计算这个概率。

方法思路

  • 问题分析:输的概率是1减去赢的概率。赢的概率是每次投掷都成功的概率,即(1/n)^m。因此,输的概率为1 - (1/n)^m。
  • 快速幂计算:使用快速幂算法来计算大数的幂取模。
  • 模逆元计算:使用费马小定理来计算模逆元,因为1e9+7是一个质数。
  • 计算步骤
    • 计算n的逆元。
    • 计算逆元的m次幂。
    • 计算输的概率,并调整负数情况。
  • 解决代码

    #include 
    using namespace std;typedef long long ll;const int MOD = 1e9 + 7;ll poww(ll a, ll b, int mod) { ll ans = 1; ll base = a; while (b) { if (b & 1) ans = (ans * base) % mod; base = (base * base) % mod; b >>= 1; } return ans;}ll inv(ll a, int mod) { return poww(a, mod - 2, mod);}int main() { ll t; read(t); for (int _ = 0; _ < t; ++_) { ll n, m; n = read(); m = read(); if (n == 1) { cout << 0 << endl; continue; } ll inv_n = inv(n, MOD); ll inv_pow = poww(inv_n, m, MOD); ll res = (1 - inv_pow + MOD) % MOD; cout << res << endl; }}

    代码解释

  • 快速幂函数poww用于快速计算大数的幂取模,适用于处理大指数问题。
  • 模逆元函数inv使用费马小定理计算模逆元,适用于质数模数。
  • 主函数:读取输入数据,处理每个测试用例,计算逆元和幂,最后输出结果。
  • 特殊情况处理:当n=1时,直接输出0,因为每次投掷都只能得到1点,无法输。
  • 通过这种方法,我们可以高效地计算牛牛输的概率,并在大数情况下快速得到结果。

    转载地址:http://ywzb.baihongyu.com/

    你可能感兴趣的文章
    Node入门之创建第一个HelloNode
    查看>>
    NOIp2005 过河
    查看>>
    NOPI读取Excel
    查看>>
    NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
    查看>>
    npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
    查看>>
    npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
    查看>>
    npm切换到淘宝源
    查看>>
    npm前端包管理工具简介---npm工作笔记001
    查看>>
    npm和yarn清理缓存命令
    查看>>
    npm和yarn的使用对比
    查看>>
    npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
    查看>>
    npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
    查看>>
    NPOI之Excel——合并单元格、设置样式、输入公式
    查看>>
    NPOI利用多任务模式分批写入多个Excel
    查看>>
    NR,NF,FNR
    查看>>
    nrf开发笔记一开发软件
    查看>>
    NSDateFormatter的替代方法
    查看>>
    nsis 安装脚本示例(转)
    查看>>
    NSOperation基本操作
    查看>>
    NSSet集合 无序的 不能重复的
    查看>>