P1297 [国家集训队]单选错位
对每一题单独考虑它的做对期望,设一题的选项数为 $p[i]$,然后对 $p[i]$ 和 $p[i-1]$ 的大小关系进行一波分类讨论并化简
然后发现 每题的期望就是 $1/max(p[i],p[i-1])$
把每题的期望加起来就是答案了
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; typedef long long ll; inline int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f; } const int N=2e7+7; int n,A,B,C,a[N]; double ans; int main() { scanf("%d%d%d%d%d",&n,&A,&B,&C,a+1); for (int i=2;i<=n;i++) a[i] = ((long long)a[i-1] * A + B) % 100000001; for (int i=1;i<=n;i++) a[i] = a[i] % C + 1; for(int i=2;i<=n;i++) ans+=1.0/max(a[i],a[i-1]); ans+=1.0/max(a[1],a[n]); printf("%.3lf",ans); return 0; }