向上取整向下取整探讨
符号
- 向下取整符号:⌊x⌋⌊x⌋⌊x⌋,表示小于等于 xxx 的最大的整数。常用于分数,比如分数的向下取整 ⌊xy⌋⌊\cfrac {x} {y}⌋⌊yx⌋。
- 向上取整符号:⌈x⌉⌈x⌉⌈x⌉,与向下取整符号相对,表示大于等于 xxx 的最小的整数。
向上取整
先放结论:左边式子表示aaa对b+1b+1b+1向上取整,右边是取整的算法
ceil(ab+1)ceil(\cfrac {a} {b+1})ceil(b+1a) = a+bb+1\cfrac {a+b} {b+1}b+1a+b
- 当aaa是b+1b+1b+1的整数倍数,a=k∗(b+1)a=k*(b+1)a=k∗(b+1),可以得到左边=右边
- 左边ceil(ab+1)ceil(\cfrac {a} {b+1})ceil(b+1a) = ceil(k∗(b+1)b+1)ceil(\cfrac {k*(b+1)} { b+1})ceil(b+1k∗(b+1)) = ceil(k)ceil(k)ceil(k) = kkk
- 右边a+bb+1\cfrac {a+b} {b+1}b+1a+b = k∗(b+1)+bb+1\cfrac {k*(b+1)+b} {b+1}b+1k∗(b+1)+b = k+bb+1k+ \cfrac {b} {b+1}k+b+1b = k+0k+0k+0 = kkk
- 当aaa除以b+1b+1b+1还有余数,设余数为ccc, 即 a=k∗(b+1)+ca=k*(b+1)+ca=k∗(b+1)+c ,因为这里的ccc是余数,其范围是$ \sum_{1}^{(b+1)} c $
- 左边ceil(ab+1)ceil(\cfrac {a} {b+1})ceil(b+1a) = ceil(k∗(b+1)+cb+1)ceil(\cfrac {k*(b+1)+c} {b+1})ceil(b+1k∗(b+1)+c) =ceil(k+cb+1)ceil(k+\cfrac {c} {b+1})ceil(k+b+1c) =ceil(k+cb+1)ceil(k+\cfrac {c} {b+1})ceil(k+b+1c) = k+1k+1k+1
- 因为这里的ceil(cb+1)ceil(\cfrac {c} {b+1})ceil(b+1c) 其中ccc比b+1b+1b+1小,向上取整的结果是1
- 左边ceil(ab+1)ceil(\cfrac {a} {b+1})ceil(b+1a) = ceil(k∗(b+1)+cb+1)ceil(\cfrac {k*(b+1)+c} {b+1})ceil(b+1k∗(b+1)+c) =ceil(k+cb+1)ceil(k+\cfrac {c} {b+1})ceil(k+b+1c) =ceil(k+cb+1)ceil(k+\cfrac {c} {b+1})ceil(k+b+1c) = k+1k+1k+1
上面两种情况下,都是左边=右边
还有一种等价的形式:
ceil(ab)ceil(\cfrac {a} {b})ceil(ba) = a+b−1b\cfrac {a+b-1} {b}ba+b−1 即⌈ab⌉⌈\cfrac {a} {b}⌉⌈ba⌉ = a+b−1b\cfrac {a+b-1} {b}ba+b−1
范围
x−1<⌊x⌋≤x≤⌈x⌉<x+1x−1<⌊x⌋≤x≤⌈x⌉<x+1x−1<⌊x⌋≤x≤⌈x⌉<x+1
⌈ab⌉≤a+b−1b⌈\cfrac {a} {b}⌉≤\cfrac {a+b-1} {b}⌈ba⌉≤ba+b−1
⌊ab⌋⌊\cfrac {a} {b}⌋⌊ba⌋≥a−(b−1)b\cfrac {a-(b-1)} {b}ba−(b−1)
实现
- 四舍五入:int(a+1.0b+0.5)int(\cfrac {a+1.0} {b}+0.5)int(ba+1.0+0.5)
应用
1904.你完成的完整对局数
class Solution {public int numberOfRounds(String startTime, String finishTime) {int s = transform(startTime), e = transform(finishTime);if (s > e) e += 24 * 60;//如果过了凌晨了,需要将e加1天的时间s = (s + 14) / 15;//上取整公式e /= 15;//下取整return s > e ? 0 : e - s;}private int transform(String s) {//转换当前的时间为分钟计String[] arr = s.split(":");int h = Integer.parseInt(arr[0]), m = Integer.parseInt(arr[1]);return h * 60 + m;}
}
向上取整向下取整探讨相关推荐
- 【python】向上取整 向下取整
python向上取整 向下取整 向上取整 ceil() 函数返回数字的向上取整整数,就是返回大于等于变量的最近的整数. ceil()是不能直接访问的,需要导入 math 模块. import math ...
- python取整方式(向上取整/向下取整/四舍五入)
1.向下取整 向下取整直接用内建的 int() 函数即可: >>> a = 3.75 >>> int(a) 3 2.四舍五入 对数字进行四舍五入用 round() ...
- c# 整数除法取整_c# 三种取整方法 向上取整 向下取整 四舍五入
c# 三种取整方法 向上取整 向下取整 四舍五入 Math.Round:四舍六入五取整 Math.Ceiling:向上取整,只要有小数都加1 Math.Floor:向下取整,总是舍去小数 public ...
- c# 四舍五入、上取整、下取整
在处理一些数据时,我们希望能用"四舍五入"法实现,但是C#采用的是"四舍六入五成双"的方法,如下面的例子,就是用"四舍六入五成双"得到的结果 ...
- python如何对人数向上取整_python中的向上取整向下取整以及四舍五入的方法
import math #向上取整 print "math.ceil---" print "math.ceil(2.3) => ", math.ceil( ...
- python向上取整 向下取整
2019独角兽企业重金招聘Python工程师标准>>> 环境python 3.6 向上取整 ceil() 函数返回数字的向上取整整数,就是返回大于等于变量的最近的整数. ceil() ...
- python计算结果向上取整_python中的向上取整向下取整以及四舍五入的方法
import math #向上取整 print "math.ceil---" print "math.ceil(2.3) => ", math.ceil( ...
- 【向上取整/向下取整】C语言向上或向下取整 函数[内容与错误,请看评论]
C语言有以下几种取整方法: 1.直接赋值给整数变量.如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分 2.C/C++中的整数除法运算符"/&qu ...
- Python向上取整 向下取整的方法
1.python向下取整 方法: 一般使用floor除法,一般除法/,round()四舍五入函数 2.python向上取整 方法: Python match.ceil函数 ceil(x)函数是向上取整 ...
最新文章
- es-04-mapping和setting的建立
- 推荐20个很有帮助的 Web 前端开发教程
- pct_change()
- 修改Maven源为阿里巴巴的镜像
- 【机器学习】传统目标检测算法之级联分类器Cascade
- 如何使用TCP套接字的端口来区分是哪个客户端发起的连接
- 这样准备,面试成功率提升30%
- 学习SQL:INNER JOIN与LEFT JOIN
- 8个流行的Python可视化工具包。
- 4G模块使用记录移远EC20、BC20
- PHP开发的AZ自动发卡网站系统源码
- UWA学堂|逻辑代码模块
- 2022年下半年(软考高级)信息系统项目管理师报名条件
- 百度地图自定义信息窗口
- 【小米】风口的猪-中国牛市
- 乐优商城之后台管理系统
- 8cm等于多少像素_1寸照片尺寸是多少,对应的像素是多少
- shrio简介--w3cschool
- 像素鸟 app 的设计与实现
- html5 游戏广告 sdk,帷千动媒SDK 3.0发布 基于HTML5富媒体广告