ARTICLE · 1026275
2026 年 9 月 GESP C++ 一级真题解析:兔子又睡了,麦粒却翻倍了
如果你觉得一级题就是“读完题,敲两行,收工”,那本期的兔子大概会拍拍你的肩:年轻人,我当年也是这么想的,然后我就睡过头了。
2026 年 9 月 GESP C++ 一级的两道题很亲切,没有复杂算法,但它们把一级最重要的能力摆在了桌面上:把生活语言翻译成程序步骤。这一步看似朴素,却是后面所有算法题的地基。


题目给出乌龟跑完全程所需的时间、兔子的速度,以及兔子准备睡多久。赛程固定为 1000,因此兔子的总时间就是:
1000 ÷ 速度 + 睡觉时间
接下来比较两者时间:谁用时少,谁获胜;一样就是平局。最后还要把兔子的时间保留两位小数。
这题真正检查四件事:
会不会用 double 保存带小数的数据;
会不会把公式写完整,尤其别把睡觉时间忘了;
知不知道“用时越少越快”,别一激动把大小关系写反;
会不会使用 fixed 和 setprecision(2) 控制输出。
浮点数比较时,稳妥的写法不是简单判断两个数是否完全相等,而是看它们的差是否足够小。一级考生不必把浮点误差研究成论文,但要知道:电脑眼里的 0.1 + 0.2,偶尔会有一点自己的想法。
最常见的丢分方式也很真实:
兔子跑步时间算对了,却把睡觉时间落在公式外;
输出了胜负,却忘记第二行时间;
写了两位小数,但没有加 fixed,结果显示成有效数字;
用时更大的被判成获胜,兔子看完都精神了。

第 1 格放 1 粒,第 2 格放 2 粒,以后每格都是前一格的两倍。求前 n 格总共有多少粒。

最适合一级的方法是老老实实循环:准备两个变量,一个保存“当前这一格有多少粒”,另一个保存“目前总共有多少粒”。每次先把当前数量加入总数,再把当前数量乘 2。
为什么推荐循环,而不是直接背 2^n-1?因为一级训练的重点不是炫公式,而是理解“变量如何一步步变化”。今天会追踪麦粒,明天才能追踪数组、状态和递推。
还有一个关键点:n 最大为 30,答案已经超过普通 int 的舒适区,使用 long long 更稳妥。题目表面在数麦粒,暗地里提醒大家:数据范围不是装饰品,读它是写程序的一部分。

它考的不是龟兔,也不是粮仓,而是最基础的程序闭环:
读入数据 → 按规则计算 → 根据条件判断 → 按要求输出。
一级孩子如果能做到下面几点,基础就算走稳了⚠️:
看到“小数”知道用浮点类型;
看到“重复若干次”想到循环;
看到“保留两位”知道设置输出格式;
看到数据范围,会考虑变量类型;
写完后能拿样例手算一遍,而不是只对着代码许愿。

先别急着敲代码,用一句中文写出公式或循环规则。
一级题经常不是不会,而是“脑子懂了,手比脑子快半拍”。写完后重点检查输出:单词大小写、换行、保留几位小数,一个都不能凭感觉。
小数进来用 double,保留位数别发愁;
条件判断看时间,谁先到站谁在前;
麦粒翻倍循环走,范围一大 long long 守;
一级题目看着甜,细节写稳才满点。

本期一级练习已上线编程学平台。打开 bianchengxue.fun,搜索 G202609-1-1 和 G202609-1-2 即可练习。