1
作爲最近的topcoder SRM問題的一部分,我們必須計算攜帶「N」個人的總線「B」的數量,因爲每輛公交車都有「S」個座位。一個計算技巧來計算例如爲每個盒子放置N個對象所需的盒子數量可以容納M個對象嗎?
在C++中計算這個最聰明的方法是什麼? 最顯而易見的方法是做:
if(N%S==0){B=N/S;}
else{ B=N/S + 1;}
^所有變量是整數,N和S ASSIGNED適當值
但是我無法理解下面的代碼是一個特定的TopCoder用戶的解決方案背後的邏輯,我正在檢查;
B = (N + (S-1))/S;
這是如何工作的?
一些測試值嘗試(例如S = 4,和N = 4,5,6,7,8),和你會看到它是如何工作的。 –
謝謝,我想我明白了:) ... – Nischal
我認爲你的「顯而易見」方法的'if'條件應該是'N%S == 0'。至於哪個解決方案更好?很難說。我認爲在實踐中沒有人會注意到兩者之間的性能差異,除非它恰好處於一些性能關鍵循環的中間。 –