• 牛客小百月赛 28 -- 牛牛和牛可乐的赌约


    链接:https://ac.nowcoder.com/acm/contest/7412/A
    来源:牛客网

    题目描述

    牛可乐发明了一种n面骰子(点数分别从1-n,掷出每面的概率为1/n)去给牛牛玩,因为牛牛是个欧皇,所以他想测试一下牛牛的人品,他告诉牛牛,让牛牛投m次骰子,牛牛如果全部投出点数为n{}nn的面就算牛牛赢,牛牛很相信自己的人品,就和牛可乐赌一包辣条,说自己肯定可以全部投出点数为n点面,但是牛牛又有点害怕自己打赌输了,想让你提前帮他计算一下他输概率有多少?

    输入描述:

    有多组输入样例,第一行为样例组数t(t≤1×106)t(tleq 1×10^6)tt1×106
    接下来t行每行有一个整数n和m,分别表示骰子的面数和牛牛的投掷次数

    (n,m<=1×109)(n,m<=1×10^9)n,m<=1×109

    输出描述:

    输出t行,每行输出为分数p/q mod 1e9+7的形式

    示例1

    输入

    1
    2 1

    输出

    500000004

    备注:

    数据较大,建议使用较快的输入输出

    这个刚开始,直接把我整蒙, 没看懂下面的p/q % mod  ,后来才想起是分数取模,加上快速幂,唉,我还是太菜了

    分数取模公式: 比如E/V 对MOD 取余就是  E*ksm(V,MOD-2)%MOD;

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define mod 1000000007
    ll qpow(ll a , ll n )
    {
        ll base = a , ans = 1;
        while(n){
            if(n&1)
                ans = (ans * base) % mod ;
            base *= base ;
            base %= mod;
            n>>=1;
        }
        return ans;
    }
    int main()
    {
        int a ;
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        cin>>a;
        while(a--){
            ll n , m;
            cin>>n>>m;
            cout<<(qpow(n,m)-1) * qpow(qpow(n,m),mod-2) % mod <<endl;
        }
        
        
        return 0;
    } 
  • 相关阅读:
    Varnish常用相关命令工具
    Varnish介绍
    varnish 内置函数详细说明
    job console部署
    Windows Server 2008(R2)配置apache+php+mysql环境问题事项
    Eclipse for php + Xdebug搭建PHP的调试环境
    DB2 SQL Error: SQLCODE=-805, SQLSTATE=51002 解决方法
    base64加密解密
    将输入流InputStream转换为String
    PowerDesigner16 安装包及破解文件
  • 原文地址:https://www.cnblogs.com/Li-ningning/p/13698013.html
Copyright © 2020-2023  润新知