Algorithm 以O(1)复杂度计算给定范围内数字的倍数?

Algorithm 以O(1)复杂度计算给定范围内数字的倍数?,algorithm,time-complexity,factors,Algorithm,Time Complexity,Factors,我们得到三个数字,L、R和K。我们需要计算L和R之间(包括两者)可被K整除的数字。 可以用O(1)复杂度来求解吗 这是一个非常简单的程序,我知道,可以很容易地完成一个循环。但我想知道,是否有可能应用某种公式或其他东西,直接知道L和R之间可被K整除的数字的计数 例如,count=(R-L+1)/K可能在某些情况下起作用 有什么吗?这是您的解决方案 quo1=l/k; quo2=r/k; rem=l%k; if(rem==0) { count=quo2-quo1+1; } els

我们得到三个数字,L、R和K。我们需要计算L和R之间(包括两者)可被K整除的数字。

可以用O(1)复杂度来求解吗

这是一个非常简单的程序,我知道,可以很容易地完成一个循环。但我想知道,是否有可能应用某种公式或其他东西,直接知道L和R之间可被K整除的数字的计数

例如,
count=(R-L+1)/K
可能在某些情况下起作用

有什么吗?

这是您的解决方案

 quo1=l/k;
 quo2=r/k;
 rem=l%k;
 if(rem==0)
 {
   count=quo2-quo1+1;
 }
 else
 {
    count=quo2-quo1;
  }   

请不要在问题中使用链接,因为它们可能会在将来某个时候消亡,并且问题变得毫无用处。请在此处描述问题。您的示例将在某些情况下起作用-您需要做的就是检查最终情况(无论
r%k=0
或否,等等)。标题非常容易误导,因为它描述了一个可能更难的问题。你想在给定的范围内计算一个数的倍数。@j_random_hacker这是在HackerAth上解释的,我从那里开始解决这个问题。检查一下,他们简单地称之为“计算除数”,这比错误更不清楚,而你的标题“计算一个数字的因子(或除数)”,使陈述更清楚,也更清楚地说明了为什么它是错误的——他们没有计算任何特定数字的除数。(例如,10的除数或因子是1、2、5和10。)所以请修改你的标题,我将删除-1。你可以改为做
r/k-(l-1)/k
(假设l、r、k是自然的)酷,这看起来更简单。