#P11600. [国家集训队] 单选错位
[国家集训队] 单选错位
题目链接
简化题意
有一场考试,有 道题目,第 道题有 个选项,每道题的答案随机。
现在有一个人知道了每一题的答案,但他把第 题的答案写在了第 题的位置上,把第 题的答案写到了第 题上。
求他做对的题的期望数。
输入格式
很大,为了避免读入耗时太多,输入文件只有 个整数参数 ,由上交的程序产生数列 。下面给出 pascal/C/C++ 的读入语句和产生序列的语句(默认从标准输入读入):
// for pascal
readln(n,A,B,C,q[1]);
for i:=2 to n do
q[i] := (int64(q[i-1]) * A + B) mod 100000001;
for i:=1 to n do
q[i] := q[i] mod C + 1;
// for C/C++
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;
选手可以通过以上的程序语句得到 和数列 ( 的元素类型是 位整数), 和 的含义见题目描述。
输出格式
输出一个实数,表示期望做对的题目个数,保留三位小数。
3 2 0 4 1
1.167
提示
【样例说明】
正确答案 | 他的答案 | 做对题目 | 出现概率 |
---|---|---|---|
。
共有 种情况,每种情况出现的概率是 ,gx 期望做对 题。(相比之下,lc 随机就能期望做对 题)
对于 的数据,。
对于 的数据,。
对于 的数据,。
对于 的数据,,。