浙江 2012 · 数学 q12

题解图(原卷截图 · 含答案与官方解析)

浙江 2012 · 数学 q12 原卷截图(含答案)

文字转写(题面 + 答案)

题面

  1. 若某程序框图如图所示,则该程序运行后输出的值是____。

答案

1120\frac{1}{120}

本题的知识树

1 概念 · 1 题型 · 2 套路 · 1 易错点 · 最深 2 层。长链是构建期派生的,源文件里只有最小一步。

攻略(零基础 → 会做)

TT 一路只被除,除数名单只有 11 到 55 · 拦住循环的那个 i=6i=6 一次除法都没做 · 最终答案:1120\frac{1}{120}

冷启动:先把框图翻译成三行字

卷面那张框图在转写时丢了。 题面只剩「若某程序框图如图所示」这一句, 图印在原卷第 3 页右栏。照扫描件逐框读回来,能用的信息就三行:

  • 初值:T=1T=1,i=1i=1;
  • 循环体:先 T=TiT=\dfrac{T}{i},然后 i=i+1i=i+1;
  • 退出条件:判断 i>5i>5——成立就输出 TT、结束,不成立就绕回循环体之前。

翻译完就可以把图合上了。往下三条路都只用这三行字。

两个细节要在这一步钉死,它们是这道题唯一的机关:

  1. 判断框在循环体后面,所以是「先做后判」——循环体至少跑一次, 每一轮的次序永远是「先做除法,再让 ii 加一,最后才判断」。
  2. 除法用的是本轮的 ii,而 ii 在判断之前就已经加过了。 于是触发退出的那个 ii,是在本轮除法做完之后才自增出来的,它一次除法都没参与。 换句话说:判断框上写着 55,真正当过除数的却是 1,2,3,4,51,2,3,4,5 这五个数, 而看到退出的那个 ii 已经是 66。

第 2 条正是本题唯一容易翻车的地方,也是三条路各自要交代清楚的同一件事。

上半左右两幅图 + 下半一栏字的教学图。标题写「① 左:切题时丢掉的那张框图(复原) 右:真做过除法的 i 只有 1\sim5」。左边是复原出来的程序框图,七个框从上到下用灰色箭头串成一条竖线:灰色切角矩形「开始」、深蓝矩形「T=1,i=1」、亮蓝矩形「T=\frac{T}{i}」、亮蓝矩形「i=i+1」、红色菱形「i>5 ?」、绿色平行四边形「输出 T」、灰色切角矩形「结束」;菱形右顶点引出一条红线向右再向上折回,箭头指进「T=\frac{T}{i}」上方那段主干,红线中段标红字「否」;菱形下方那段箭头旁标绿字「是」。右边是一条灰色水平数轴,右端标 i,轴上六个圆点自左向右对应刻度 1 到 6,前五个是绿色实心点、第六个是红色空心点,刻度数字写在点下方;轴上方一条绿色双箭头从 1 拉到 5,标绿字「这 5 个 i 真的做过除法」;数轴上方另有一行绿字「T=\frac{1}{1\times2\times3\times4\times5}=\frac{1}{120}」;数轴下方两行红字「i=6 一次除法都没做,它只负责让循环停下」,再下面一行红字「门槛挪一格就换答案:i>4 → \frac{1}{24},i>6 → \frac{1}{720}」。下半那栏字先写「② 框图翻译成三行:T=1,\ i=1;T=\frac{T}{i},i=i+1;判断 i>5(做完再判)」,然后分三段。「路一 照着框图跑 5 轮:第 k 轮用的除数正是 i=k」下面五行左右两列:左列依次「第 1 轮:T=1\div1=1」「第 2 轮:T=1\div2=\frac{1}{2}」「第 3 轮:T=\frac{1}{2}\div3=\frac{1}{6}」「第 4 轮:T=\frac{1}{6}\div4=\frac{1}{24}」「第 5 轮:T=\frac{1}{24}\div5=\frac{1}{120}」,右列依次「轮末 i=2 i>5?否 → 回到 T=\frac{T}{i}」「轮末 i=3 否」「轮末 i=4 否」「轮末 i=5 否」「轮末 i=6 i>5?是 → 输出」;前四行蓝字,第五行绿字。「路二 循环不变式:每次走到判断框,都有 T=\frac{1}{(i-1)!}」下面蓝字一行「归纳一步:设进循环体前 T=\frac{1}{(i-1)!},则 T\to\frac{T}{i}=\frac{1}{i!}、i\to i+1——形状没变」,绿字一行「退出时 i=6 \Rightarrow T=\frac{1}{5!}=\frac{1}{120}」。「路三 只数除数:T 从 1 起只被除,除数就是 i 的历次取值」下面蓝字一行「i 从 1 起每轮 +1,首次 i>5 才退出 \Rightarrow 除数恰是 1、2、3、4、5」,绿字一行「T=\frac{1}{1\times2\times3\times4\times5}=\frac{1}{120}」。末行绿字「跑了 5 轮,输出 T=\frac{1}{120}=\frac{1}{5!}(i=6 只负责停机,别把它算进除数)」。

解法一:照着框图跑五轮,把 TT 和 ii 摞成一张表

最笨也最稳的一条:门槛只有 55,手推五轮就到底了。 每一轮严格按框图的次序走——除法、自增、判断,一步都不许调换。

轮次 kk本轮的除数(进循环体时的 ii)轮末的 TT轮末的 iii>5i>5?
11111÷1=11\div1=122否,绕回
22221÷2=121\div2=\dfrac{1}{2}33否,绕回
333312÷3=16\dfrac{1}{2}\div3=\dfrac{1}{6}44否,绕回
444416÷4=124\dfrac{1}{6}\div4=\dfrac{1}{24}55否,绕回
5555124÷5=1120\dfrac{1}{24}\div5=\dfrac{1}{120}66是,输出

第五轮末 i=6i=6,判断框第一次成立,输出

T=1120.T=\frac{1}{120}.

表格里有两条自查线,抄错一步立刻现形:

  • 「本轮的除数」这一列必须是 1,2,3,4,51,2,3,4,5,一个不多一个不少,且与轮次 kk 相等;
  • 「轮末的 ii」永远比本轮除数大 11。最后一行是 55 与 66—— 这就是判断框拦住的那个 ii 与最后一个除数的差一。

手推的短板也在这里:门槛若不是 55 而是 20122012,这条路就废了。下面两条不怕。

解法二:循环不变式——每次走到判断框,都有 T=1(i−1)!T=\frac{1}{(i-1)!}

不逐轮跑,改找一句每次走到判断框时都成立的话。位置要说死:判断框之前—— 因为退出恰好发生在那里,那句话与退出条件一联立,答案就掉出来。

猜形状。 把上表每一行的「轮末 TT」与「轮末 ii」配成一对,只盯同一行里这两个量的关系:

(1, 2),(12, 3),(16, 4),(124, 5).(1,\,2),\qquad \Bigl(\tfrac12,\,3\Bigr),\qquad \Bigl(\tfrac16,\,4\Bigr),\qquad \Bigl(\tfrac1{24},\,5\Bigr).

分母 1,2,6,241,2,6,24 依次是 1!,2!,3!,4!1!,2!,3!,4!,而配对的 ii 是 2,3,4,52,3,4,5。于是猜

T=1(i−1)!(每次走到判断框时).T=\frac{1}{(i-1)!}\qquad(\text{每次走到判断框时}).

一步归纳证掉。 第一次走到判断框之前,循环体已跑了一轮:T=1÷1=1T=1\div1=1、i=2i=2, 而 1(2−1)!=1\dfrac{1}{(2-1)!}=1,起点成立。设某次走到判断框时 T=1(i−1)!T=\dfrac{1}{(i-1)!}, 若判断为「否」,则绕回循环体,按框图的次序做两件事:

T ⟼ Ti=1(i−1)!⋅i=1i!,i ⟼ i+1.T\ \longmapsto\ \frac{T}{i}=\frac{1}{(i-1)!\cdot i}=\frac{1}{i!}, \qquad i\ \longmapsto\ i+1 .

新的一对是 (1i!, i+1)\left(\dfrac{1}{i!},\,i+1\right),代进那句话:1((i+1)−1)!=1i!\dfrac{1}{\bigl((i+1)-1\bigr)!}=\dfrac{1}{i!}——一模一样。 所以这句话在每一次经过判断框时都成立。

代退出状态。 退出发生在判断为「是」的那一刻,即 i>5i>5 第一次成立。 ii 从 22 起每次经过判断框加一,取值依次是 2,3,4,5,62,3,4,5,6,第一次超过 55 的是 i=6i=6。代入:

T=1(6−1)!=15!=1120.T=\frac{1}{(6-1)!}=\frac{1}{5!}=\frac{1}{120}.

这条路的好处是与轮数脱钩:门槛改成 i>2012i>2012,前面一个字不用动,末一步换成 12012!\dfrac{1}{2012!}。

解法三:只数除数——TT 从 11 起只被除,除数就是 ii 跑过的那几个数

连闭式都不用写。看一眼循环体:TT 在整个执行过程里只经历一种运算——被除, 而且除数每次都是当时的 ii。除法就是乘倒数,乘法可交换可结合, 所以做除法的先后次序对结果毫无影响。跑完之后必有

T=1d1d2⋯dm,T=\frac{1}{d_1 d_2 \cdots d_m},

其中 d1,…,dmd_1,\dots,d_m 是历次的除数。于是全题只剩一个问题:哪几个数当过除数?

答案是 1,2,3,4,51,2,3,4,5。这一步全部的承重点是从框图读出来的两件事,先摊开写清:

  • (甲)i=i+1i=i+1 这一框在循环体里,位置在 T=TiT=\dfrac{T}{i} 之后、判断框之前;
  • (乙)判断框在循环体之后(先做后判)。

由(甲):除数就是每轮进循环体时 ii 的值,而 ii 从 11 起、每轮恰加一次一, 所以历次除数是 1,2,3,…1,2,3,\dots 这样往下排,不重不漏、不跳号。 由(甲)+(乙):判断框看到的是本轮除法做完、ii 也加过之后的那个值, 所以「i>5i>5」第一次成立于 i=6i=6,而这个 66 是第 55 轮除法(除以 55)做完才被加出来的—— 66 从来没当过除数,名单到 55 为止。

这两条缺一不可:若 i=i+1i=i+1 落在返回箭头上(判断框看到的是加一之前的 ii), 就会多跑一轮、名单变成 11 到 66,输出是 1720\dfrac{1}{720}。所以读框图时先把这两框的相对位置抄下来, 再动笔数除数。

于是除数名单恰好是 11 到 55:

T=11×2×3×4×5=1120.T=\frac{1}{1\times2\times3\times4\times5}=\frac{1}{120}.

认不出 1×2×3×4×5=5!1\times2\times3\times4\times5=5! 也没关系,这条路要的只是那个乘积。 自查也最省事:名单里有几个数,循环就跑了几轮——五个数、五轮,与解法一的表对得上。

三个提醒

  1. 判断框上的 55 不是「跑五轮」的那个 55,两件事只是在这道题里恰好对上了。 真正决定答案的是除数名单,而名单的末尾由「先做后判」定死: i=6i=6 只负责让循环停下,它一次除法都没做。 把 66 也乘进去会得 1720\dfrac{1}{720},把 55 漏掉会得 124\dfrac{1}{24}—— 这两个数都在选择题的干扰项里出现过。

  2. 框图里两个赋值的先后不能调。 本题是「先除后增」;若把 i=i+1i=i+1 挪到 T=TiT=\dfrac{T}{i} 之前, 同样跑到 i>5i>5 退出,除数名单就变成 2,3,4,5,62,3,4,5,6,输出是 1720\dfrac{1}{720}。 同一堆框,两个赋值换个次序,答案就换一个。读框图时先把次序抄下来, 再动笔算。

  3. 问的是 TT 还是 ii,看清楚。 本题问「输出的值」,输出框里装的是 TT, 所以答案是 1120\dfrac{1}{120},不是最后看到的那个 i=6i=6。 同一套框图换成「输出 ii」,答案就成了 66——这类题两种问法都常见, 而 TT 与 ii 在退出瞬间恰好差着一层阶乘,认错一个全盘皆错。

本题涉及的教材页

共 1 页