以 O(1) 复杂度计算给定范围内数字的倍数?
Count multiple of a number in a given range with O(1) complexity?
给定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;
}
给定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;
}