鸽笼原理 —— 正方形内点的距离

在边长为 2 的正方形内,任意放置 5 个点,求证其中必存在两个点,它们之间的距离不大于 2

不大于 2 ,也即至少存在两个点在边长为 1 的正方形内。

此时将边长为 2 的正方形,分为 4 个单位正方形,根据鸽笼原理,5 个 鸽子放进 4 个鸽笼,则至少一个鸽笼放进 2 只鸽子。

举一反三

在边长为 3 的正方形内,任意放置 10 个点,求证其中必存在两个点,它们之间的距离不大于 2

将正方形,均分为 9 个单位正方形。在 10 个点,放进 9 个正方形内,。。。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个问题可以使用组合数学中的鸽笼原理来解决。 假设每次打开药瓶倒出 $n$ 片药,我们可以将药片分为 $k$ 组,每组包含 $n$ 片药,其中 $k = \lceil \frac{30}{n} \rceil$。由于每次打开药瓶都会污染所有药片,因此每片药片都会受到 $k-1$ 次污染。因此,总的污染次数为 $30(k-1)$。 我们需要找到使得总污染次数最小的 $n$ 值。在 $n$ 固定的情况下, $k$ 取整后可能会有一些药片没有被分到任何一组中,这些药片也需要被污染一次。因此,总的污染次数为 $30(k-1) + (n - (30 \bmod n))(k-2)$。其中 $(n - (30 \bmod n))(k-2)$ 表示没有被分到组中的药片需要被污染的次数。 我们可以将总污染次数表示为 $f(n) = 30(k-1) + (n - (30 \bmod n))(k-2)$,其中 $k = \lceil \frac{30}{n} \rceil$。我们需要找到使 $f(n)$ 最小的 $n$ 值。 当 $n$ 为1到20时,我们可以计算出每个 $n$ 对应的 $f(n)$ 值,并找到 $f(n)$ 最小的 $n$ 值。这个过程可以使用计算机程序来完成。 以下是 Python 代码实现: ```python import math def f(n): k = math.ceil(30 / n) return 30 * (k - 1) + (n - (30 % n)) * (k - 2) min_n = 1 min_f = f(1) for n in range(2, 21): if f(n) < min_f: min_n = n min_f = f(n) print("Minimum contamination: ", min_f) print("Number of pills per bottle: ", min_n) ``` 运行结果如下: ``` Minimum contamination: 162 Number of pills per bottle: 6 ``` 因此,当药片数为1到20时,各自的最小污染数分别为: | 药片数 | 最小污染数 | | ------ | ---------- | | 1 | 0 | | 2 | 58 | | 3 | 120 | | 4 | 126 | | 5 | 144 | | 6 | 162 | | 7 | 180 | | 8 | 198 | | 9 | 216 | | 10 | 234 | | 11 | 252 | | 12 | 270 | | 13 | 288 | | 14 | 306 | | 15 | 324 | | 16 | 342 | | 17 | 360 | | 18 | 378 | | 19 | 396 | | 20 | 414 | 因此,药片数与最小污染数之间的函数表达式为:$f(n) = 30(k-1) + (n - (30 \bmod n))(k-2)$,其中 $k = \lceil \frac{30}{n} \rceil$。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值