比赛链接:https://ac.nowcoder.com/acm/contest/879#question
链接:https://ac.nowcoder.com/acm/contest/879/B
来源:牛客网
B.投硬币
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld
题目描述
neverthoughtIcouldbecomethisstronginmywholelifeneverthoughtIcouldbecomethisstronginmywholelife
你在练习 dp,你每一次会有 p 的概率成功,1-p 的概率失败
求投 n 次后,至少有 k 次成功的概率
答案模 998244353,其中 0≤k,n≤105,0≤p<9982443530≤k,n≤105,0≤p<998244353
实际上给你的这个概率是在模 998244353 意义下的,换句说 p≡ab(mod998244353)p≡ab(mod998244353)
输入描述:
第一行三个整数 n,k,p
输出描述:
一行一个整数表示答案对 998244353 取模的结果
示例1
输入
复制
34 21 56
输出
复制
345738771
n,k<=1e5,直接组合数求和就完事了,注意组合数取模和逆元的应用
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
const int mod=998244353;
ll dp[maxn],n,k,p,q;
ll inv[maxn],f[maxn];
ll ans;
ll modpow(ll x,ll n,ll mod)
{
ll res=1;
for(;n;n/=2,x=(x*x)%mod)
if(n&1)res=(res*x)%mod;
return res;
}
void init()
{
f[0]=1;inv[0]=1;
for(ll i=1;i<=maxn-10;++i)
f[i]=f[i-1]*i%mod;