早教吧 育儿知识 作业答案 考试题库 百科 知识分享

谁能帮我证明一个算式已知n是m的倍数,v是任意一个比n大的整数,ceil(x)为向上取整x,floor(x)为向下取整xn/m是否等于floor(ceil(v/m)*n)这个打算用来加快计算机常数除法的计算的不好意思写错了,应

题目详情
谁能帮我证明一个算式
已知n是m的倍数,v是任意一个比n大的整数,ceil(x)为向上取整x,floor(x)为向下取整x
n/m是否等于 floor(ceil(v/m)*n)
这个打算用来加快计算机常数除法的计算的
不好意思写错了,应该是floor(ceil(v/m)*n/v)
▼优质解答
答案和解析
ceil(x)是不小于x的最小整数,floor(x)是不大于x的最大整数,有以下性质
(1)以下不等式成立
x ≤ ceil(x) < x+1
x -1 < floor(x) ≤ x
floor(x) ≤ x < floor(x)+1
ceil(x)-1< x ≤ ceil(x)
(2)若y是整数,则有
ceil(x+y) = ceil(x)+y
floor(x+y) = floor(x)+y
由题意可知,v>n>m,且v,n,m均为整数
由于n为m的倍数,可令 k=n/m,k为整数
令h=v-n,则有v=km+h,h为大于0的整数
于是
ceil(v/m)
= ceil[(km+h)/m]
= ceil(k+h/m)
= k+ceil(h/m)
于是
ceil(v/m)*n/v
= [k+ceil(h/m)] * n / (n+h)
= [k*n + ceil(h/m)*n] / (n+h)
= [k*n + k*h -k*h + ceil(h/m)*n] / (n+h)
= [k(n+h) - k*h + ceil(h/m)*n] / (n+h)
= k + [ceil(h/m)*n -k*h] / (n+h)
= k + [ceil(h/m)*n -(n/m)*h] / v
= k + [ceil(h/m)-h/m]*n/v
= k + p (令 p = [ceil(h/m)-h/m]*n/v)
由于 x ≤ ceil(x) < x+1
因此 h/m ≤ ceil(h/m) < h/m+1
于是p ≥ (h/m-h/m)*n/v = 0
p < (h/m+1-h/m)*n/v = n/v