爬树的甲壳虫(2022蓝桥杯)

当时比赛的时候期望不是多熟练 现在看来这个题还是多简单的

设E(k)表示当前在第k层 到n层期望的时间

当前有两种情况 要么到k+1层 要么回到0层

到k+1层: (1-p)× [E(k+1) + 1]

回到0层: p × [E(0)+1]

E(k)=(1-p)× E(k+1) + 1 + p × E(0)

很明显的一个线性递推式 最后一定是关于E(0)的一个式子

我们分别统计 1前面的系数 和右边E(0) 前面的系数就好

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
const int mod=998244353;
const int maxn=1e5+5;
int n;
ll fast_mi(ll aa,ll bb){
	ll res=1;
	while(bb){
		if(bb&1)res=res*aa%mod;
		bb>>=1;
		aa=aa*aa%mod;
	}
	return res;
}
ll p[maxn],pre[maxn];
ll sum1,sum0;
int main(){
	cin>>n;
	pre[0]=1;
	for(int i=1;i<=n;i++){
		int a,b;
		cin>>a>>b;
		p[i]=a*fast_mi(b,mod-2)%mod;
		pre[i]=pre[i-1]*(1-p[i]+mod)%mod;
	}
	for(int i=0;i<=n-1;i++){
		sum1=(sum1+pre[i])%mod;
		sum0=(sum0+p[i+1]*pre[i]%mod)%mod;
	}
	cout<<sum1*fast_mi(1-sum0+mod,mod-2)%mod<<endl;
     return 0;
}

posted @   wzx_believer  阅读(676)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示