解
手推可以发现,选对第i道题的期望为
1/max(第i−1道题的选项数,第i道题的选项数)1/max(第i-1道题的选项数,第i道题的选项数)1/max(第i−1道题的选项数,第i道题的选项数)
累计起来即可
代码
#include<bits/stdc++.h>
using namespace std;
int n;
long long A, B, C, lll, az, aq, lllaq, lllaz;
double ans;
int main(){
scanf("%d%lld%lld%lld%lld", &n, &A, &B, &C, &lll);
aq = lll;
for(int i = 2; i <= n; ++i){
az = (aq * A + B) % 100000001;
lllaq = aq % C + 1;
lllaz = az % C + 1;
if(lllaq > lllaz) ans += 1.0/lllaq;
else ans += 1.0/lllaz;
aq = az;
}
az = az % C + 1;
lll = lll % C + 1;
if(lll > az) ans += 1.0/lll;
else ans += 1.0/az;
printf("%.3lf", ans);
}