博客要開始更新了。畢竟noip也算過去了。
這差不多又是一道數學題,我們這樣考慮:
對於一道答案有a種情況,會選b種可能的題,兩兩排一下,一共有ab種情況,而符合條件的只有min(a,b)種,那麼,期望爲(1/ab)*min(a,b),也就是1/max(a,b)。
之後就是O(n)累加就好了。
#include<bits/stdc++.h>
#define N 10000000
using namespace std;
int n,A,B,C,a[N+5];
double ans;
int main()
{
freopen("in.txt","r",stdin);
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+=(double)1/max(a[i],a[i-1]);
printf("%.3f",ans);
return 0;
}