当前位置: 首页 > news >正文

PAT 甲级题目讲解:1011《World Cup Betting》

✅ PAT 甲级题目讲解:1011《World Cup Betting》

📌 摘要:本文讲解 PAT 甲级 1011《World Cup Betting》解题思路,核心是每轮选择最大赔率并记录对应的下注选项(W/T/L),累乘后根据公式(ans * 0.65 - 1) * 2计算收益并保留两位小数输出,考察数组操作、最大值查找及格式化输出。

🧩 题目简介

本题以 2010 南非世界杯为背景,讲述了中国体育彩票提供的一个叫做 “Triple Winning(三选一)” 的投注玩法。

每场比赛都有三个可能的结果可以投注:

  • W(Win):胜
  • T(Tie):平
  • L(Lose):负

每个结果都有对应赔率,即押中后按赔率收益。

玩家选择任意3 场比赛,每场选择一个结果投注,总收益计算方式为
profit=(a1×a2×a3×0.65−1)×2 \text{profit} = (a_1 \times a_2 \times a_3 \times 0.65 - 1) \times 2profit=(a1×a2×a3×0.651)×2

  • a1,a2,a3a_1, a_2, a_3a1,a2,a3:三场比赛中各自选择的最大赔率;

  • 0.65是系统扣率(即乘积赔率会乘上 65%);

  • 减去1是减掉本金;

  • 再乘2是因为下注金额为 2 元。

要求获得最大收益的下注顺序以及最大收益是多少。


🧪 样例分析

输入样例:

1.1 2.5 1.7 1.2 3.1 1.6 4.1 1.2 1.1

分析过程:

  • 第一轮最大赔率 2.5(T);
  • 第二轮最大赔率 3.1(T);
  • 第三轮最大赔率 4.1(W);

最大收益计算如下:

ans=(2.5×3.1×4.1×0.65−1)×2=(31.775×0.65−1)×2=(20.65375−1)×2=19.65375×2=39.3075≈39.31 \text{ans} = (2.5 \times 3.1 \times 4.1 \times 0.65 - 1) \times 2 \\ = (31.775 \times 0.65 - 1) \times 2 \\ = (20.65375 - 1) \times 2 = 19.65375 \times 2 = 39.3075 \approx 39.31ans=(2.5×3.1×4.1×0.651)×2=(31.775×0.651)×2=(20.653751)×2=19.65375×2=39.307539.31

输出下注顺序,然后保留两位小数输出最大收益:

T T W 39.31

🔍 解题思路

考察基本的选择+乘法+浮点运算+字符串映射输出的能力。解题核心是每轮选择最大赔率,并记录对应下注选项,最后进行浮点乘法与格式化输出。


📎 变量说明表格

变量名类型含义
c[]char[]映射下标到选项字符'W','T','L'
a[]double[]当前一轮三种赔率
ansdouble最终的累计收益乘积
maxxdouble当前一轮最大赔率值
dint当前一轮最大赔率对应选项下标(1~3)

✅ Step 1:初始化选项映射与累计收益

charc[5]={' ','W','T','L'};doublea[5],ans=1;

✅ Step 2:封装处理每一轮赔率的函数

使用函数f()来:

  • 读取一轮的三个赔率;
  • 找出最大值及其位置;
  • 累乘最大赔率到ans
  • 输出对应的选项字符和空格。
voidf(){doublemaxx=0;intd=0;for(inti=1;i<=3;i++){scanf("%lf",&a[i]);if(a[i]>maxx){maxx=a[i];d=i;}}ans*=maxx;printf("%c ",c[d]);}

✅ Step 3:主函数执行流程

  1. 初始化收益乘积ans = 1
  2. 调用三次f(),对应三轮比赛;
  3. 按题目规则计算最终收益;
  4. 输出保留两位小数的最终收益。
intmain(){f();f();f();ans=(ans*0.65-1)*2;printf("%.2lf",ans);return0;}

✅ 完整代码(C++)

#include<bits/stdc++.h>usingnamespacestd;charc[5]={' ','W','T','L'};doublea[5],ans=1;voidf(){doublemaxx=0;intd=0;for(inti=1;i<=3;i++){scanf("%lf",&a[i]);if(a[i]>maxx){maxx=a[i];d=i;}}ans*=maxx;printf("%c ",c[d]);}intmain(){f();f();f();ans=(ans*0.65-1)*2;printf("%.2lf",ans);return0;}

🚧 常见错误提醒

错误类型具体表现
索引从 0 开始错误c[]数组下标与赔率顺序不一致,导致输出选项错误
浮点精度问题没有使用%.2lf格式输出,保留位数不对
未初始化收益乘积忘记ans = 1,导致最终收益错误
多余换行或空格输出格式不符合要求,应仅用空格分隔

✅ 总结归纳

📌 核心方法总结

  • 每轮找最大值及其位置;
  • 映射下标输出对应选项;
  • 累乘赔率,按题意公式计算收益。

📋 技术要点回顾

  • 输入输出格式控制;
  • 基础数组操作与映射逻辑;
  • 简单浮点乘法与保留位数输出。

📊 复杂度分析

  • 时间复杂度:O(1)\mathcal{O}(1)O(1)(仅处理常数个数据)
  • 空间复杂度:O(1)\mathcal{O}(1)O(1)

🧠 思维拓展

  • 若比赛轮数变为nnn轮,如何改写程序支持动态输入?
  • 本题实质是:选择最大收益的策略问题,可类比:投资选择、博弈策略优化等模型。
http://www.jsqmd.com/news/1120659/

相关文章:

  • Retrieval-based-Voice-Conversion-WebUI语音克隆技术:10分钟构建专业级AI歌手解决方案
  • 5分钟搞定FFXIV高难度副本!Cactbot插件终极使用指南 [特殊字符]
  • Instatic缓存策略:CDN集成与缓存控制头配置
  • 从0到1掌握tools.cli:Clojure命令行应用开发完全手册
  • Gemini四款主力模型选型指南:从物理约束到工程落地
  • gearmand Worker实现详解:打造可靠的分布式任务执行者
  • 如何用Scarab轻松管理空洞骑士模组:终极跨平台解决方案指南
  • CMS用户体验研究:Instatic界面可用性测试
  • 10个CircularProgressView实战案例:从加载动画到进度显示
  • 如何使用Connector快速实现1С系统HTTP请求?新手入门指南
  • 如何快速上手LIII:零基础也能玩转的多平台BT下载工具
  • Agent Skills技能流式处理:处理大数据量任务的技能设计
  • B站会员购票自动化工具:告别手动抢票的烦恼
  • tools.cli实战指南:手把手教你构建专业级命令行应用
  • OpenClaw机械臂抓取系统:核心技术解析与应用实践
  • 深入解析DES算法:从Feistel网络到C语言实现
  • 本地部署大模型选型指南:显存、量化与场景匹配实战
  • eldarion-ajax与Bootstrap集成:构建响应式AJAX界面的完整教程
  • Enchanted架构解析:构建跨平台私有化LLM聊天应用的技术实践
  • CANN/GE Python内存分配器API
  • Video2X终极指南:免费AI视频放大与帧率提升神器
  • 昇腾/GE LLM数据分发分配缓存块API
  • Duix.Avatar本地部署实战:打造属于你的AI数字人工作室
  • IpaDownloadTool使用技巧:二维码扫描与URL Scheme深度应用
  • Each定时器库深度解析:为什么它是Swift开发者必备的10个理由
  • Juggl节点面板使用技巧:高效管理和操作知识图谱中的节点
  • CANN/mat-chem-sim-pred:SOPDT批量PID候选评分算法
  • Heya自定义操作开发指南:超越邮件的多渠道营销自动化
  • 如何一键备份微信聊天记录:WeChatMsg让你的珍贵对话永不丢失
  • AI音乐写歌用什么App软件?2026国产工具实测推荐