洛谷P1297 單選錯位——期望
阿新 • • 發佈:2018-06-20
ble scanf lan get PE %d ont http long
題目:https://www.luogu.org/problemnew/show/P1297
讀懂題後就變得很簡單啦;
對於一個問題和它的下一個問題,我們考慮:
設上一個問題有 a 個選項,下一個問題有 b 個選項;
那麽上一道題中選到每個選項的概率是 1/a;
下面對應正確的概率是 1/b;
則總期望是 1/a * 1/b * min(a,b);
也就是 1/max(a,b)。
代碼如下:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long ll;int const maxn=10000005; int n,a[maxn],A,B,C; 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=1;i<n;i++) ans+=(double)1/(max(a[i],a[i+1])); ans+=(double)1/(max(a[1],a[n])); printf("%.3lf\n",ans); return 0; }
洛谷P1297 單選錯位——期望