题目描述
题解
答案就是每一位和前面一位答案相同的概率和(权值为1)
也就是sigma (1/a(i-1)) * (1/a(i)) * min(a(i-1),a(i))
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
#define N 10000005
int n,A,B,C;
int 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;
a[0]=a[n];
for (int i=1;i<=n;++i)
ans+=(1/(double)a[i-1])*(1/(double)a[i])*(double)min(a[i-1],a[i]);
printf("%.3lf\n",ans);
}