2016-07-31 54 views
3

給定一個數Ñ和一些間隔(L: - [R),我怎樣才能計數該時間間隔內的Ñ倍數? (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

L,n,R非負數? –

+0

假設L> = 0 - 這很直觀 – xenteros

+0

問題是L和R之間有多少n的倍數,不是正整數 – Daniel

回答

0

豈不

R/n - (L-1)/n 

工作假設整數除法在這裏?由於R/n是n的倍數n < = R和(L-1)/n n的倍數n,所以差別就是你想要的。

+1

@downvoter - 一個反例將會對人好點。謝謝! –

+0

我明白你的意思,我認爲它的作品:) – Daniel

+0

無論如何你能編輯你的答案,所以我可以改變我的missdownvote upvote? – xenteros