分析
那么这道题的概率期望应该是
∑
m
i
n
(
a
,
b
)
a
b
=
∑
1
m
a
x
(
a
,
b
)
\sum\frac{min(a,b)}{ab}=\sum\frac{1}{max(a,b)}
∑abmin(a,b)=∑max(a,b)1
所以直接模拟就可以了
代码
#include <cstdio>
#define rr register
using namespace std;
typedef long long ll;
double ans;
inline ll max(ll a,ll b){return a>b?a:b;}
inline ll modd(ll x,ll mod){
rr int f=1;
if (x<0) x=-x,f=-f;
if (x>=(mod<<4)) x=(x-(mod<<4))%mod;
else {
x-=(x>=(mod<<3)?(mod<<3):0);
x-=(x>=(mod<<2)?(mod<<2):0);
x-=(x>=(mod<<1)?(mod<<1):0);
x-=(x>=(mod<<0)?(mod<<0):0);
}
return x*f;
}
signed main(){
rr ll n,t1,t2,t3,now,ls,x;
scanf("%lld%lld%lld%lld%lld",&n,&t1,&t2,&t3,&now); ls=now;
while (--n){
x=modd(ls*t1+t2,100000001);
ans+=1.0/max(modd(x,t3)+1,modd(ls,t3)+1);
ls=x;
}
ans+=1.0/max(modd(now,t3)+1,modd(ls,t3)+1);
return !printf("%.3lf",ans);
}