P1297 [国家集训队] 单选错位

2018-05-22 18:40:31


计算期望做对的题目数,只需要把每道题目做对的概率加起来即可!

当前一道题有4个选项,后一道题有6个选项时,做对的概率为1/6,

当前一道题有6个选项,后一道题有4个选项时,做对的概率也是1/6.

所以只要从左到右扫描a数组,累加相邻两数中较大数的倒数即可。

由于此题的输入比较神奇,所以用两个变量就可以模拟a数组。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod=1e8+1;
int n,x,y,z,t,t1,t2;
double ans;
int main()
{
    scanf("%d%d%d%d%d",&n,&x,&y,&z,&t); 
    --n; t1=t;
    while (n--)
    {
        t2=((ll)t1*x+y)%mod;
        ans+=1.0/max(t1%z+1,t2%z+1);
        t1=t2;
    }
    ans+=1.0/max(t1%z+1,t%z+1);
    printf("%.3lf\n",ans);
    return 0;
}