冷启动:向量那一句只是在递一个 3-4-5
题面开头三句关于向量的条件,作用只有一个——把三条边长算出来:
∣a−b∣2=∣a∣2+∣b∣2−2a⋅b=32+42−2×0=25 ⟹ ∣a−b∣=5.
于是三条边是 3,4,5。这是最有名的那个直角三角形(32+42=52),面积 S=23×4=6。向量的戏份到此为止,后面全是平面几何。
接下来两件事必须当场看出来,它们决定这道题是「三秒」还是「三分钟」:
第一件:题目问的是「边」,不是「边所在的直线」。 一条直线与圆至多 2 个公共点,三条直线给出的上界是 6——正好是选项 D。但边是线段:直线上的交点可能落在延长线上,那就不算数。凡是按 3×2=6 直接答 D 的,都是在这里翻的车。
第二件:半径 1 不是随便给的。 这个三角形的内切圆半径是
r0=pS=23+4+56=66=1,
(直角三角形还有更快的算法:r0=23+4−5=1。)
也就是说,题目给的这个圆和这个三角形的内切圆一模一样大。这个巧合是整道题的开关:圆再小一点,它就同时够不着三条边;圆再大一点(只要还不到 2),把它按在内心上就能三条边各截两个点,答案立刻变成 6。恰好相等时,「三条边都够得到」这件事被逼到只剩唯一一种摆法——内切圆本身,而它只给 3 个点。
下面三条路各用一种方式把这句话说死。

解法一:建系硬算——三条距离同时不超过 1,把圆心夹成一个点
① 建系。 直角顶点放原点,两条直角边压在坐标轴上:
C(0,0),B(4,0),A(0,3).
三条边所在的直线分别是 y=0、x=0 与 3x+4y−12=0(后者由两点 (4,0)、(0,3) 写出,注意 32+42=5,分母正好是斜边)。
② 把「够得着」翻成三个不等式。 设圆心为 P(x0,y0),半径 1。圆与某条边有公共点,首先必须与该边所在的直线有公共点,也就是圆心到这条直线的距离不超过半径。用点到直线的距离公式,三条边各给一句:
∣y0∣⩽1,∣x0∣⩽1,5∣3x0+4y0−12∣⩽1.
(这三句是必要条件:距离够近只保证直线上有交点,交点在不在线段内还要另验——这正是本题最容易漏掉的一步,第 ④ 步会补上。)
③ 三句一撞,圆心只剩一个位置。 第三句去掉绝对值是
−5⩽3x0+4y0−12⩽5⟹3x0+4y0⩾7.
而前两句给出的是相反方向的估计:
3x0+4y0⩽3∣x0∣+4∣y0∣⩽3+4=7.
一边 ⩾7、一边 ⩽7,只能全取等号。取等要求 x0=∣x0∣=1 且 y0=∣y0∣=1,即
P=(1,1).
这正是内心,此时到三条直线的距离都恰是 1——三条边各相切。
④ 验交点确实在边上。 三个切点是 (1,0)、(0,1) 与 (58,59)(最后一个由 (1,1) 沿法向 5(3,4) 走 1 得到)。它们分别落在 0⩽x⩽4、0⩽y⩽3 与斜边上,都在线段内。所以这个摆法确实给出 3 个公共点,一个不多一个不少。
⑤ 收口。 上面证的是:只要三条边都与圆有公共点,圆就必然是内切圆,公共点恰好 3 个。于是要想凑出更多的点,只能让某一条边彻底出局——至多两条边与圆有公共点,每条至多 2 个,总数
公共点个数⩽2×2=4.
⑥ 造一个把 4 取到的圆。 取圆心 P0=(1.6,0.8),半径仍是 1:
- 到水平直角边(y=0)的距离 0.8<1,交点 x=1.6±1−0.82=1.6±0.6,即 x=1 与 x=2.2,两个都在 [0,4] 内 —— 贡献 2 个;
- 到斜边的距离 5∣3×1.6+4×0.8−12∣=54=0.8<1,半弦长 0.6,两个交点算出来是 (1.6,1.8) 与 (2.56,1.08),都在斜边上 —— 贡献 2 个;
- 到竖直直角边(x=0)的距离是 1.6>1 —— 贡献 0 个。
合计 4 个。上界与例子对上了。
答案 B。
解法二:不建系——用面积把三条距离绑在一起
解法一的坐标是为这道题量身定做的(直角顶点在原点才那么好算)。换一个不带直角的三角形,坐标就没那么友好了。下面这条路一个坐标都不用,而且对任意三角形都成立。
① 一句恒等式,先把它证严。 设三角形 △A1A2A3 的三边长为 a,b,c(a 对着 A1,余类推),面积为 S。对平面上任一点 P,记它到三条边所在直线的有向距离为 δ1,δ2,δ3——约定「三角形内部那一侧为正」。断言
aδ1+bδ2+cδ3=2S对平面上每一个 P 都成立.
为什么:点到一条定直线的有向距离是 P 的坐标的一次函数(A2+B2Ax+By+C 的分子是一次的),所以左边整体是 P 的一次函数。一次函数由三个不共线的点上的取值唯一确定,那就把三个顶点代进去验:在顶点 A1 处,它到边 a 所在直线的有向距离正是这条边上的高 ha,到另两条边所在直线的有向距离都是 0,于是左边 =aha=2S(用的是「底乘高的一半」这条最朴素的三角形面积公式)。A2、A3 同理也都得 2S。三点取值相同,故这个一次函数恒等于 2S。
把有向距离换成真正的距离 di=∣δi∣⩾δi,立刻得到
ad1+bd2+cd3 ⩾ aδ1+bδ2+cδ3=2S,
等号成立当且仅当三个 δi 全部非负,也就是 P 落在三角形内部或边界上。这个刻画对平面上任意一点都有效,圆心跑到三角形外面也照用——下一步正需要这一点。
② 代进这道题的数。 a,b,c 是 3,4,5,2S=12:
3d1+4d2+5d3 ⩾ 12.
③ 把「三条边都够得到」代进去。 若某条边与半径 1 的圆有公共点,取那个公共点 Q:它既在圆上(∣PQ∣=1)又在这条边所在的直线上,于是圆心到该直线的距离 ⩽∣PQ∣=1。三条边都够到,就有 d1,d2,d3⩽1,于是
3d1+4d2+5d3 ⩽ 3+4+5=12.
两个 12 撞在一起——注意这不是巧合,它就是 r0=a+b+c2S=1 的另一种写法。夹逼之下只能
d1=d2=d3=1,
并且第 ① 步的取等条件同时告诉我们 δi=di=1>0,即 P 确实在形内。形内到三条边距离都等于 1 的点就是内心,此时圆与三条直线各相切;三个切点 (1,0)、(0,1)、(58,59) 都落在对应的线段内(解法一第 ④ 步已逐个验过),公共点恰好 3 个。
④ 同样的收口。 三条边都够到 ⇒ 恰好 3 个点。所以想要更多,至多两条边参与,上限 4;解法一里那个 P0=(1.6,0.8) 的圆把 4 取到了。
答案 B。
这条路顺手给出一个「换半径会怎样」的结论。 把半径写成 r,第 ③ 步的右边变成 3+4+5 乘以 r,也就是 12r,与 ⩾12 一比:
- r<1:三条边都够到就要 di⩽r,左边 ⩽12r<12,与 ⩾12 打架,三条边不可能同时够到,所以上限仍是 4。而 4 总是取得到——取圆心 (c,c),其中 2r<c<r:到两条直角边的距离都是 c<r,各截两点,交点分别是 x=c±r2−c2 与 y=c±r2−c2;由 c>2r 得 c2>r2−c2,故小的那个 >0,而大的那个 <c+r<2,四个交点全部落在 [0,4]、[0,3] 内;到斜边的距离 512−7c>512−7=1>r,够不着。故最大值恰为 4。
- r=1:本题。能同时够到三条边的只剩内切圆一种(3 个点);想更多就得放弃一条边,最大值 4。
- 1<r<2:把圆按在内心 (1,1) 上,到三条边的距离都是 1<r,每条边各截两点。半弦长 u=r2−1 这时严格小于 1,于是两条直角边上的交点 1±u 都落在 (0,2) 里——小的那个严格大于 0,两条直角边不会共用直角顶点那一个交点;斜边上的两个交点 (58±54u,59∓53u) 的横坐标落在 (0.8,2.4)、纵坐标落在 (1.2,2.4),也都在段内。六个点两两不同,6 个点摆得出来,而 6 本就是绝对上限,故最大值是 6。
- r=2:这一个值上内心那个摆法恰好失效——圆心 (1,1) 到直角顶点的距离正是 2,圆穿过这个顶点,两条直角边上「小的」那个交点撞成同一个点 (0,0),只剩 5 个。把圆心挪一点点就补回来了:取 (1,1.05),到两条直角边的距离是 1.05 与 1、到斜边的距离是 5∣3+4.2−12∣=0.96,三个都小于 2,各截两点;六个交点算出来分别是 (1±0.8975,0)≈(0.05,0) 与 (1.95,0)、(0,0.05) 与 (0,2.05)、(2.41,1.19) 与 (0.75,2.44),全部落在段内,且圆心到直角顶点的距离 1+1.052≈1.45>2,圆不再穿过它,六点互不相同。所以这一个值上最大值仍是 6。
- r>2:圆比三角形还富余,内心那个摆法开始把交点甩到边的延长线上——例如 r=3、圆心仍取 (1,1) 时,半弦长 8≈2.83,水平直角边上只剩 x≈3.83 一个交点(另一个 x≈−1.83 出界),竖直直角边上两个都出界,斜边上也只剩一个,总共只有 2 个。这一档的最大值要另行讨论,这里不展开。
所以在 r⩽2 这一段里,最多能有几个公共点这个数会在 r 跨过 1 的那一刻从 4 直接跳到 6,中间不停在 5。这也解释了为什么出题人把选项排成 3,4,5,6:5 那一项专治「凭感觉觉得还能再多一个」。
要说清楚的是:5 个公共点本身并非摆不出来,它只是当不了「最多」。 半径取 1.2、圆心取 (0.8,1.2) 就正好给出 5 个——竖直直角边上两个(y=1.2±0.894,都在 [0,3] 内)、水平直角边上相切一个(切点 (0.8,0))、斜边上两个((0.8,2.4) 与 (1.952,1.536),都在段内)。但那个半径下最多能到 6,所以「最多」仍然轮不到 5。本题的 r=1 才是把 5 彻底封死的那一档——第 ③ 步的夹逼只在 r=1 时把「三条边都够到」压成唯一的内切圆,而 5 个点必须三条边都参与。
解法三:从选项倒着走——先造出一个 4,再证不可能有 5
前两条路都是正面强攻。选择题还有一条更省力的走法:答案是四个数中的一个,只要从下面顶一次、从上面压一次,中间就只剩一个。
① 先顶一次:造出 4。 取圆心 (1.6,0.8)、半径 1(算法见解法一第 ⑥ 步):水平直角边上截出 x=1 与 x=2.2 两点,斜边上截出两点,竖直直角边够不着。共 4 个。
于是答案 ⩾4,选项 A(3)出局。
② 再压一次:证明到不了 5。 这一步用鸽笼式的分摊来想。设某个摆法给出了 N⩾5 个公共点。每条边是一段线段,与圆至多 2 个公共点,三条边加起来至多 6 个。要凑够 5 个,三条边贡献的个数只能是
(2,2,1)或(2,2,2) 再去掉一个
——不管怎么分,每一条边都至少贡献 1 个。也就是说:N⩾5 逼出「三条边全都与圆有公共点」。
而「三条边全都与圆有公共点」这件事,解法一(坐标夹逼)或解法二(面积恒等式)已经查清:它只在圆心是内心时发生,此时三条边各相切,公共点恰好 3 个,N=3<5。矛盾。
所以 N⩽4,选项 C(5)与 D(6)一并出局。
③ 剩下的就是答案。 四选一,3 被顶掉、5 和 6 被压掉,只剩 4。
答案 B。
两句话缺一不可。 只做第 ① 步,得到的是「至少 4」——那 5 和 6 凭什么排除?只做第 ② 步,得到的是「至多 4」——那凭什么不是 3?考场上真正会丢分的是只做一半就收笔:造了一个 4 出来就选 B,碰巧对了,但同一套话换成半径 1.2 的圆就会答错(那时答案是 6)。
顺带一提为什么「顶」要先做。 造例子是构造性的、手上有图就能试;卡上界是结构性的、需要找到那句把三条距离绑住的恒等式。先造几个例子,最大的那个数会告诉你上界应该证到几——本题里正是「怎么试都停在 4」这件事,提示我们去找「为什么三条边不能同时够到」。