【发布时间】:2016-07-06 08:16:53
【问题描述】:
给定三个数,L、R 和 K。我们需要计算 L 和 R(包括两者)之间能被 K 整除的数。
是否可以用 O(1) 复杂度解决?
我知道这是一个非常简单的程序,可以通过循环轻松完成。但我想知道是否可以应用某种公式或其他东西来直接知道 L 和 R 之间可被 K 整除的数字的计数。
例如,count = (R - L + 1) / K 在某些情况下可能会起作用。
有什么事吗?
【问题讨论】:
-
请不要在关于 SO 的问题中使用链接,因为它们可能会在未来某个时候死掉,问题变得毫无用处。请在此处描述问题。
-
您的示例将在某些情况下工作 - 您只需检查最终情况(是否
r % k = 0等) -
标题非常具有误导性,因为它描述了一个可能更难的问题。您想计算给定范围内数字的 倍数。
-
@j_random_hacker 这就是我在 HackerEarth 上的解释,我从那里解决了这个问题。看看hackerearth.com/problem/algorithm/count-divisors
-
嗯,他们把它简单地称为“计数除数”,这比错误更不清楚,而你的标题“计算一个数字的因子(或除数)”,在使陈述更清楚,也更清楚为什么它是错误的——他们没有计算任何特定数字的 的除数。 (例如,10 的除数或因数是 1、2、5 和 10。)所以请修正你的标题,我将删除 -1。
标签: algorithm time-complexity factors