间隔内的倍数

时间:2016-07-31 19:31:10

标签: algorithm

给定数字 n 和某个间隔( L:R ),如何计算此间隔内 n 的倍数?< / p>

如果我做(R-L + 1)/ n,它不会给我正确的答案,例如,在3和5之内,有4的一个倍数,但是(5-3 + 1 )/ 4 = 0,在4和8之间,有4的2倍数,但是(8-4 + 1)/ 4 = 1.

我尝试了这个,但它也不会工作( div(4,4,13)= 2 中的失败)

int div(int n, int l, int r){
    let mod = n - l % n;
    let first = mod == n? l : l + mod;
    return first > r? 0 : (r-first+1)/n + 1;
}

重点是:我不想检查一千件事情,我想有一些快速的方法可以做到。

1 个答案:

答案 0 :(得分:0)

岂不

R/n - (L-1)/n

在这里假设整数除法?由于R/n是n&lt; = R的倍数,并且(L-1)/n n的倍数是&lt; L,差异就是你想要的。