链接
http://www.lydsy.com/JudgeOnline/problem.php?id=2134
题解
首先题与题之间是独立的,所以最后的总期望肯定就是每道题的期望之和。
考虑一道有a个选项的题写到了一个有b个选项的题上对答案的贡献。
当
a≤b
时,答对的概率是
1b
,共有a种情形,每种情形出现的概率是
1a
,因为答对的贡献是1,所以期望=
a×1b×1a
当
a>b
时,对于前b个选项,答对的概率是
1b
,
[b+1,a]
这些选项,答对的概率是0,共有a种情形,每种情形的概率
1a
,因此对答案的贡献是
b×1b×1a
显然,最后的答案是
∑min(a,b)ab
期望还是不熟啊….
代码
//water problem
#include <cstdio>
#include <algorithm>
using namespace std;
int a[10000010], A, B, C, N;
int main()
{
int i;
double ans=0.0;
scanf("%d%d%d%d%d",&N,&A,&B,&C,a+1);
for(i=2;i<=N;i++)a[i]=((long long)a[i-1]*A+B)%100000001;
for(i=1;i<=N;i++)a[i]=a[i]%C+1;
for(i=2;i<=N;i++)
{
ans+=(double)min(a[i-1],a[i])/a[i]/a[i-1];
}
ans+=(double)min(a[N],a[1])/a[1]/a[N];
printf("%.3lf",ans);
}