zoukankan      html  css  js  c++  java
  • 投硬币

    https://ac.nowcoder.com/acm/contest/879/B

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

    你在练习 dp,你每一次会有 p 的概率成功,1-p 的概率失败
    求投 n 次后,至少有 k 次成功的概率
    答案模 998244353,其中 0≤k,n≤105,0≤p<9982443530 le k,n le 10^5,0 le p < 9982443530k,n105,0p<998244353
    实际上给你的这个概率是在模 998244353 意义下的,换句说 p≡ab(mod998244353)p equiv frac{a}{b} pmod {998244353}pba(mod998244353)

    输入描述:

    第一行三个整数 n,k,p

    输出描述:

    一行一个整数表示答案对 998244353 取模的结果
    示例1

    输入

    复制
    34 21 56

    输出

    复制
    345738771
    题解: 从k到n,逐个枚举,计算公式为C(n,i)*p^i*(1-p)^(n-i);(C是组合数);
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=1E5+7;
    const int mod=998244353;
    ll ksm(ll x,  ll y){
        ll res=1;
        while(y){
            if(y&1) res=res*x%mod;
            x=x*x%mod;
            y>>=1;
        }
        return res%mod;
    }
    ll c(ll n,ll m){
        if(m>n)return 0;
        ll a=1,b=1;
        for(int i=1;i<=m;i++){
            a=a*(n+i-m)%mod;
            b=b*i%mod;
        }
        return a*ksm(b,mod-2)%mod;
    }
    int main(){
        int n,m,k;
        cin>>n>>m>>k;
        ll ans=0;
        ll temp= c(n,m); 
        for(int i=m;i<=n;i++){
            ans=(ans%mod+(temp%mod*ksm(k,i)%mod*ksm(1-k,n-i)%mod)%mod) %mod;
            temp = (((temp * (n-i))%mod)*ksm(i+1, mod-2))%mod; 
        }
        cout<<(ans+mod)%mod<<endl;
        return 0;
    }



  • 相关阅读:
    mysql常用语句集锦
    PHP 面向对象
    PHP 数组
    PHP 语句 函数 字符串处理
    PHP 随笔
    mysql常用函数
    数据库 创建 查询 练习
    HTML JavaScript语法练习
    HTML JavaScript练习
    随机数生成的简单原理
  • 原文地址:https://www.cnblogs.com/Accepting/p/11447295.html
Copyright © 2011-2022 走看看