题目:小明五次输入四位数的手机密码分别是:6087. 5173. 1358. 3825. 2531,均错误,但是每次输入的密码中有两位数字正确,位置都不对。现求小明正确四位数手机密码?最后总结解题思路步骤。
答案:手机密码为 8712**
1. 把题目转换成数学问题
- 每个猜测(四位数)与真正的密码共有 两位数字相同,
- 但这两位数字在各自的位置上都不对应。
- 密码里的每一位数字均来自 0‑9 的十进制数字;题目里出现的数字只有
{0,1,2,3,5,6,7,8}
(4、9 没出现过,显然不可能是密码的一部分)。
2. 找出“可能的四个数字”集合
设真正密码为 S = {a,b,c,d}。
对每一次猜测,恰好有两位数来自 S,另外两位不是。
因此:
∑_{x∈S} 在所有 5 次猜测中出现的次数 = 5×2 = 10
先统计题目里各个数字在五次猜测中的出现次数(记为 “频数”):
| 数字 | 频数 |
|---|---|
| 0 | 1 |
| 1 | 3 |
| 2 | 2 |
| 3 | 3 |
| 5 | 4 |
| 6 | 1 |
| 7 | 2 |
| 8 | 3 |
于是 S 的四个数字的频数之和必须是 10。
在 C(8,4)=70 个组合中,满足“频数之和=10”的集合只有下面几组:
{0,1,2,5} {0,1,3,8} … (共 20 组)
3. 检验每个候选集合是否满足“每次猜测恰好有两位数相同”
我们把上述 20 组逐一与五次猜测的数字集比较,寻找 所有猜测都出现正好两个交叉元素 的集合。
最终发现唯一符合条件的是
S = {1, 2, 7, 8}
验证示例(仅给出第一行):
- 猜测
6087与 S 的交集为{8,7},恰好两个数字。 - 同理对其余四次猜测均满足这一要求。
4. 确定 具体排列(位置)
现在知道密码是这四个数字,但还未确定它们的顺序。
进一步利用“两位数在各自位置上都不对应”的限制:
| 猜测 | 正确的两位数字 | 这些数字在猜测中的位置 | 对密码中相应位置的禁用条件 |
|---|---|---|---|
| 6087 | 8,7 | 3,4 | s3≠8, s4≠7 |
| 5173 | 1,7 | 2,3 | s2≠1, s3≠7 |
| 1358 | 1,8 | 1,4 | s1≠1, s4≠8 |
| 3825 | 8,2 | 2,3 | s2≠8, s3≠2 |
| 2531 | 2,1 | 1,4 | s1≠2, s4≠1 |
把所有条件列出来后,逐步排除不可能的位置:
- 由于 8 在所有猜测中都不能位于其原位置(3、2、4),唯一可行的是放在第 1 位。
- 于是
s1 = 8。
剩下的数字 {1,2,7} 需要填入位置 2、3、4,满足:
s2 ≠ 1 , s2 ≠ 8 → s2 ∈ {2,7}
s3 ≠ 8 , s3 ≠ 2 → s3 ∈ {1,7}
s4 ≠ 7 , s4 ≠ 8 → s4 ∈ {1,2}
尝试组合:
- 若
s2 = 2,则s3=7,s4=1;但 G5 的两位数字(2、1)会与猜测中的位置相同 → 不行。 - 于是设
s2 = 7。
剩余 {1,2} 必须放在 s3 和 s4:s3 = 1,s4 = 2
验证所有限制都通过,且每一次猜测的两位数字均不与原位置对应。
5. 最终答案
手机密码 = 8712
验证
| 猜测 | 正确数字 | 位置是否相同 |
|---|---|---|
| 6087 | 8,7 | 均不同 |
| 5173 | 1,7 | 均不同 |
| 1358 | 1,8 | 均不同 |
| 3825 | 8,2 | 均不同 |
| 2531 | 2,1 | 均不同 |
满足题目所有条件。
总结思路与步骤
- 统计频数:把每个数字在五次猜测中的出现次数记录下来。
- 利用总和约束:密码四位数的频数之和必为 10,缩小候选集合。
- 交集验证:检查候选集合与每次猜测的交集大小是否都恰好是 2。
- 确定排列:把“相同位置不对”转化成一系列“不能放的位置”,逐步排除,最终得到唯一排列。
这样即可在不枚举所有 10⁴ 个密码的前提下,用逻辑推理快速求解。