题库连接php
共有 \(n\) 道单选题,第 \(i\) 道单选题有 \(a_i\) 个选项,这 \(a_i\) 个选项编号是 \(1,2,3,…,a_i\),每一个选项成为正确答案的几率都是相等的。你把答案抄到答题纸上,没想到抄错位了:第 \(i\) 道题目的答案抄到了答题纸上的第 \(i+1\) 道题目的位置上,特别地,第 \(n\) 道题目的答案抄到了第 \(1\) 道题目的位置上。假设你没有作错任何题目,只是答案抄错位置,求指望能作对几道题目。c++
\(2\leq n\leq 10000000,1\leq a_i\leq 100000000\)spa
假设第 \(i\) 道题有 \(x\) 个选项,第 \(i+1\) 题有 \(y\) 个选项。code
综上,作对第 \(i+1\) 题的几率为 \(p=\frac{1}{\max\{a_{i},a_{i+1}\}}\)。ip
#include <bits/stdc++.h> using namespace std; const int N = 10000000+5; int n, A, B, C, 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] = (1ll*a[i-1]*A+B)%100000001; for (int i = 1; i <= n; i++) a[i] = a[i]%C+1; for (int i = 2; i <= n; i++) ans += 1./max(a[i], a[i-1]); ans += 1./max(a[n], a[1]); printf("%.3lf\n", ans); return 0; }