算法问题中的鸽子原理

时间:2016-06-29 11:13:26

标签: java algorithm math

我正在阅读关于Codefoces问题的编辑,但仍然无法理解,因为它使用了PigeonHole原则,我没有得到如何在这个问题上应用鸽派原则

这是问题编辑:

在这个问题中,我们使用了septimal数字系统。这是一个非常重要的限制。让我们计算在手表显示屏上显示多少位数并将其称为cnt。如果cnt大于7,答案显然是0(因为鸽子原理)。如果cnt不大于7,那么你可以强制执行所有情况。

这里'问题陈述 http://codeforces.com/contest/686/problem/C

袭击格尔达出租车的强盗非常成功地从王国警察那里进行了掩护。为了更加努力地捕捉它们,我们使用自己的手表。

首先,因为他们知道王国警察在数学方面表现不佳,劫匪使用位置数字系统和基数7.其次,他们在n小时内划分一天,在m分钟内划分每小时。每个强盗的个人手表分为两部分:第一部分具有显示从0到n-1的任何整数所需的最小可能数量,而第二部分具有显示所需的最小可能数量的地方0到m-1之间的任何整数。最后,如果使用基数7中的地点数量少于此监视所显示的小时数或分钟数,则在表示法的开头添加所需的零数。

请注意,要显示手表的第0部分,必须至少有一个地方。

小强盗想要知道时刻的数量(小时和分钟的特定值),这样手表上显示的所有数字都是不同的。帮她计算这个数字。

1 个答案:

答案 0 :(得分:0)

"鸽子原则"就是这样:如果我试着把七只以上的鸽子放进七个鸽笼里,其中一只鸽子就会有一只以上的鸽子。

这里,最佳数字是鸽笼,而时间表示中的位置是鸽子。因此,如果您可以(快速)确定某个特定情况需要超过七个位置来表示时间,那么鸽子原则会告诉您不能有任何具有不同数字的表示,您可以跳过非常缓慢的计数工作蛮力的这种陈述,继续下一个案例。