整數除法向上取整


整數除法向上取整

方法一

\(c++\)上,默認的除法是整數除法向下取整,那有些場景中我們需要整數除法向上取整,辦法是什么呢?(這里不說證明的辦法,直接給結論)

$\huge \lceil \frac{n}{m} \rceil = \lfloor \frac{n-1}{m} \rfloor +1 \ (n>0,m>0) $
有需要關心證明的看這里

給出幾個示例:

#include <bits/stdc++.h>

using namespace std;

int main() {    
    int n = 13, m = 3;
    printf("%d\n", (n - 1) / m + 1);

    n = 12, m = 3;
    printf("%d\n", (n - 1) / m + 1);

    n = 11, m = 3;
    printf("%d\n", (n - 1) / m + 1);

    n = 1, m = 3;
    printf("%d\n", (n - 1) / m + 1);
    return 0;
}

結果:

用句東北話說就是:“能除干凈不?除干凈有多少是多少;除不干凈,再給搭一個,不占人家便宜~”

方法二

借助於C++自帶的上取整函數,這個操作太妙了,好理解,我要是想使用上取整,就這個了。

res = ceil((long double) n / m) * m;
cout << res << endl;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM