浙江 2010 · 数学 q02
题解图(原卷截图 · 含答案与官方解析)

文字转写(题面 + 答案)
题面
(2)某程序框图如图所示,若输出的 ,则判断框内为
(A) ? (B) ?
(C) ? (D) ?
(框图内容(第 2 题):开始 → , → → → 判断框(框内写什么正是本题所问)?「否」的分支绕回 继续循环,「是」的分支往下 → 输出 → 结束。)
答案
A
本题的知识树
4 概念 · 1 题型 · 4 套路 · 1 易错点 · 最深 3 层。长链是构建期派生的,源文件里只有最小一步。
- 套路排除法反着来——四个选项各代进去跑一遍
攻略(零基础 → 会做)
循环把 S 推到 57 时计数器停在 5 · 逐圈模拟 / 四个选项各跑一遍 / 先求通项 · 最终答案:A
冷启动:先把这张框图读成一句人话
原卷把框图印在第 1 页右侧,切题时它落进了第 1 题那张图里,所以这道题的切图上看不到它。下面这张是照原卷复原的:

读框图只需要按箭头走一遍:
- 进循环前先把两个变量放好:,。
- 每转一圈做两件事,顺序要紧:先把计数器加一(),再更新累加量()。也就是说,这一圈用的是加过之后的 。
- 然后问一句判断框里的话。答「否」就绕回去再转一圈;答「是」就跳出去,把当前的 打印出来。
判断框写在循环体后面,所以这个循环至少转一圈(先做事,再问要不要停)。题目倒过来问:已知打印出来的是 ,判断框里该填哪一句?
四个选项都是 某个数的形状,而 每圈只加 、一路递增,所以「第一次满足 」就是「 刚好变成 的那一圈」。于是问题变成: 等于 的时候, 停在几?
解法一:逐圈模拟——把每一圈的 与 写成一张表
怎么想到的。 循环体只有两行、数也不大,最老实的办法就是最快的办法:拿张纸按箭头走,每转一圈记一行。别在脑子里硬算,写出来才不会串行。
进循环前:,。
| 圈数 | 先 | 再 |
|---|---|---|
| 第 1 圈 | ||
| 第 2 圈 | ||
| 第 3 圈 | ||
| 第 4 圈 |
第 4 圈结束时 正好是 ,此刻 。程序要在这里跳出来,说明判断框里那句话满足:
- 在 时成立(这样才跳出去打印 );
- 在 时都不成立(否则会提前跳出,打印 、 或 )。
四个选项里同时满足这两条的只有 —— 成立,而 都不大于 。答案 A。
最容易错的一笔在这里。 是第 4 圈算出来的,可这一圈里 的值是 而不是 。「转了 4 圈」与「计数器是 5」差一步,是因为 从 起步、每圈加一。看到 就顺手填 或 的,都是在这一步上读岔了:一个把圈数当成了计数器,一个把「跳出时的 」当成了门槛本身。门槛要比跳出时的 小 。
解法二:反着来——四个选项各代进去跑一遍
怎么想到的。 上一条是「从框图算到答案」,选择题还有一条更省心的路:答案就摆在那儿,挨个试。把每个选项填进判断框,各跑一遍程序,看谁打印出 。这条路不需要事先想清楚「圈数与 差几」——那个最容易错的地方,被「照着框图跑」绕过去了。
先把这条链算长一点(每圈还是先 加一、再 ):
填 时,程序在 的那一圈跳出,打印的就是那一圈的 :
| 选项 | 判断框 | 跳出时 | 打印的 |
|---|---|---|---|
| (A) | |||
| (B) | |||
| (C) | |||
| (D) |
只有 (A) 打印 。答案 A。
顺带看出一件事:门槛往后挪一格,输出就要翻一倍还多(),所以这四个候选的输出互不相同,答案唯一、不会有并列。图里下半那四根柱子画的就是这张表:红色虚线是题面要的 ,四根柱子里只有第一根落在线上。
解法三:先求通项—— 每圈翻一倍
怎么想到的。 前两条都在「跑」。如果门槛不是 而是 ,跑就跑不动了,得有个公式。把循环体写成递推:第 圈算出的值记作 (下标就用这一圈的 , 是进循环前的初值),则
麻烦的是右边多了一个 ,不是干净的「每圈翻倍」。补一个东西让它变干净:猜 能每圈翻倍,代进去定 ——
比较 的系数得 ,即 ;再比较常数项得 ,即 。于是
这就是这个循环的不变式:每转一圈, 恰好翻一倍,从不例外。起点 ,所以 ,
验一下: 给 , 给 ,与表里逐圈算的一致。
现在解 :
左边翻倍着涨、右边一次一格,两条曲线至多交两次;试 得 对 (左小), 得 对 (相等), 得 对 (左大),所以 是唯一解。跳出时 ,门槛就是 ,答案 A。
这条路多给了什么。 有了 ,把 换成任何一个数都能一口气回答,甚至能反过来问「输出第一次超过一万是第几圈」。前两条路只对这一道题的这几个数管用。