• 整数除法向上取整


    整数除法向上取整

    方法一

    \(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;
    
  • 相关阅读:
    Python 学习目录
    Django目录
    SQLAlchemy
    Flask之Sqlalchemy
    Websocket
    Mongodb
    虚拟环境
    Github
    LINUX
    内存管理和垃圾回收机制
  • 原文地址:https://www.cnblogs.com/littlehb/p/15213429.html
Copyright © 2020-2023  润新知