1. 程式人生 > >洛谷P1297 單選錯位——期望

洛谷P1297 單選錯位——期望

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 單選錯位——期望