news 2026/4/20 3:24:45

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《P1297 [国家集训队] 单选错位》

题目描述

gx 和 lc 去参加 noip 初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案。

试卷上共有 n 道单选题,第 i 道单选题有 ai​ 个选项,这 ai​ 个选项编号是 1,2,3,…,ai​,每个选项成为正确答案的概率都是相等的。

lc 采取的策略是每道题目随机写上 1∼ai​ 的某个数作为答案选项,他用不了多少时间就能期望做对 ∑i=1n​ai​1​ 道题目。gx 则是认认真真地做完了这 n 道题目,可是等他做完的时候时间也所剩无几了,于是他匆忙地把答案抄到答题纸上,没想到抄错位了:第 i 道题目的答案抄到了答题纸上的第 i+1 道题目的位置上,特别地,第 n 道题目的答案抄到了第 1 道题目的位置上。

现在 gx 已经走出考场没法改了,不过他还是想知道自己期望能做对几道题目,这样他就知道会不会被 lc 鄙视了。

我们假设 gx 没有做错任何题目,只是答案抄错位置了。

输入格式

n 很大,为了避免读入耗时太多,输入文件只有 5 个整数参数 n,A,B,C,a1​,由上交的程序产生数列 a。下面给出 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;

选手可以通过以上的程序语句得到 n 和数列 a(a 的元素类型是 32 位整数),n 和 a 的含义见题目描述。

输出格式

输出一个实数,表示 gx 期望做对的题目个数,保留三位小数。

输入输出样例

输入 #1复制

3 2 0 4 1

输出 #1复制

1.167

说明/提示

【样例说明】

正确答案gx的答案做对题目出现概率
{1,1,1}{1,1,1}361​
{1,2,1}{1,1,2}161​
{1,3,1}{1,1,3}161​
{2,1,1}{1,2,1}161​
{2,2,1}{1,2,2}161​
{2,3,1}{1,2,3}061​

a={2,3,1}。

共有 6 种情况,每种情况出现的概率是 61​,gx 期望做对 63+1+1+1+1+0​=67​ 题。(相比之下,lc 随机就能期望做对 611​ 题)

对于 30% 的数据,n≤10,C≤10。

对于 80% 的数据,n≤104,C≤10。

对于 90% 的数据,n≤5×105,C≤108。

对于 100% 的数据,2≤n≤107,0≤A,B,C≤108,1≤ai​≤108。

代码实现:

#include<cstdio> #include<iostream> #include<iomanip> using namespace std; int arr[10000001]; int main() { int n,A,B,C; scanf("%d%d%d%d%d",&n,&A,&B,&C,arr+1); for(int i=2;i<=n;i++) arr[i]=( (long long)arr[i-1]*A+B )%100000001; for(int i=1;i<=n;i++) arr[i]=arr[i]%C+1; long double res=0.0; for(int i=1;i<=n;i++) { int nx=i+1; if( nx>n ) nx=1; if( arr[i]<=arr[nx] ) res+=(long double)1.0/arr[nx]; else res+=(long double)1.0/arr[i]; } cout<<fixed<<setprecision(3)<<res; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 23:20:50

【单仓库多旅行商问题SDMTSP】基于BSLO吸血水蛭优化器求解单仓库多旅行商问题,可以更改数据集和起点附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/4/17 16:53:07

强烈安利9个AI论文网站,MBA论文写作必备!

强烈安利9个AI论文网站&#xff0c;MBA论文写作必备&#xff01; AI 工具如何助力 MBA 论文写作 MBA 学习过程中&#xff0c;论文写作是一项不可避免的挑战。无论是选题、资料收集还是内容撰写&#xff0c;都需要大量的时间和精力。而随着 AI 技术的发展&#xff0c;越来越多的…

作者头像 李华
网站建设 2026/4/19 11:47:59

大模型高薪岗位汇总:年薪40-220万,程序员必学必收藏

锐仕方达发布热招高薪岗位132个&#xff0c;最高年薪400万。大模型领域薪资诱人&#xff0c;9个精选岗位年薪从40万到220万不等&#xff0c;涵盖杭州、上海、北京等热门城市&#xff0c;涉及互联网、人工智能、航空航天等行业。这些高薪岗位包括大模型研发经理、算法工程师、技…

作者头像 李华
网站建设 2026/4/19 18:58:54

大模型时代职场指南:收藏这份全景职业图谱,找准你的发展赛道

本文将大模型领域岗位划分为基础设施与工程类、模型研发与算法类、数据类、产品与应用类四大类&#xff0c;详细列举了每类典型岗位及职责。文章指出岗位间存在交叉&#xff0c;未来可能出现新角色&#xff0c;并强调除专业技能外&#xff0c;沟通协作、产品思维和伦理意识日益…

作者头像 李华
网站建设 2026/4/17 22:39:27

突破传统训练局限!TRAPO框架实现大模型“边学边练“新范式

TRAPO框架解决了传统"先SFT后RL"两阶段训练的不一致性问题&#xff0c;通过实例级交错执行监督微调与强化学习实现"边学边练"协同范式。其创新"按需支架"机制和信任区域SFT(TrSFT)目标函数&#xff0c;通过梯度裁剪避免策略退化&#xff0c;使模…

作者头像 李华
网站建设 2026/4/17 1:30:38

大模型技术选型:从通用到垂直,企业AI落地的性价比之王(收藏指南)

文章分析了通用大模型与垂直大模型的适用场景&#xff0c;指出通用大模型加Agent在信息检索、办公自动化等领域已足够&#xff0c;而垂直大模型在医疗诊断、金融风控等高专业门槛领域不可替代。AI落地的最佳策略是用通用大模型做底座开发Agent工作流&#xff0c;仅在核心业务错…

作者头像 李华