给定一个数字n和一些区间(L:R),如何计算该区间内n的倍数的数量?
如果我使用(R-L+1)/n,它将无法给出正确的答案,因为例如,在3和5之间,有一个4的倍数,但(5-3+1)/4 = 0,在4和8之间,有2个4的倍数,但(8-4+1)/4 = 1。
我尝试了这个方法,但它也行不通(在div(4,4,13) = 2中失败)。
如果我使用(R-L+1)/n,它将无法给出正确的答案,因为例如,在3和5之间,有一个4的倍数,但(5-3+1)/4 = 0,在4和8之间,有2个4的倍数,但(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;
}
关键是:我不想检查一千个东西,我猜应该有一些快速的方法来完成。