背景
同事吃饭闲聊的一道面试题
问题
有10个桶,每个桶有无数个球,单个桶中每个球一模一样。其中有9个桶中每个球质量都是10g,另外一个桶每个球质量都是9g。现在有一个秤,可以显示质量。问最少需要多少次才能超出小球质量不相同的桶?
Solution 1 二分: 4 次
5 → 3 → 2 → 1
Solution 2 1次
第 i 个桶区 1 0 i 10^i 10i 个小球,那么秤一次,看质量哪一位不为1
问题变形一
特殊的桶中的质量不再为 9, 而是 1-9 中任意一个数
Solution 2 同样适用
问题变形二
- 特殊的桶中的质量不再为 9, 而是 1-9 中任意一个数
- 每一个桶中球的个数不再是无限个,如果尽可能地少取球的个数,同样需要一次就可以分别出来
Solution 3 1次
取 10 个不同的质数: [ p 0 , p 1 , p 2 , . . . , p 9 ] [p_0, p_1, p_2, ..., p_9] [p0