给定数字 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;
}
重点是:我不想检查一千件事情,我想有一些快速的方法可以做到。
答案 0 :(得分:0)
岂不
R/n - (L-1)/n
在这里假设整数除法?由于R/n
是n&lt; = R的倍数,并且(L-1)/n
n的倍数是&lt; L,差异就是你想要的。