Codeforces 1265E

Codeforces 1265E
题意
  有 n 个关卡,过第 i 个关卡的 概率为 Pi,如果通过第 i 个 关卡则进入下一关,否则就从第
  1 关开始,问多少轮可以通关;
思路:
  期望 Pi 则 通过这关的次数为 k = 100/Pi,
  设通过第 i 关 的次数为 f[i];
  则 f[i+1] = k * ( f[i] + 1 );
  f[n] 则 为 答案
  由于Pi要做分母,则需要用到逆元运算,由于 余数 为 质数,则可以用费马小定理求解

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 2e5+10;
const int mod = 998244353;
int a[N];
LL ksm(int a,int b)
{
 int ret = 1;
 a %= mod;
 while( b )
 {
  if( b & 1 )
   ret = 1ll*ret*a%mod;
  b >>= 1;
  a = 1ll*a*a%mod;
 }
 return ret % mod;
}
int main()
{
 int n;
 scanf("%d",&n);
 for(int i=1;i<=n;i++)
  scanf("%d",&a[i]);
 LL ans = 0;
 for(int i=1;i<=n;i++)
  ans = 1ll*100*(ans+1)%mod*ksm(a[i],mod-2)%mod;
 printf("%lld\n",ans);
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值