具体数学读书笔记之取整函数
引言
取整函数不但在数学上具有很重要的地位,在程序设计方面也同样重要,这一章讲取整函数
数学符号及C语言库函数
取整分为两种,一种是向下取整,记为 ⌊x⌋;另一种是向上取整,记为⌈x⌉;他们分别表示取比x小或者相等的最大的整数和取比x大或相等的最小的整数。在C语言中有向上取整对应着ceil(x),向下取整对应着
floor(x)
一些性质
图中显示的是直线y = x和向下取整函数,容易看出取整函数的值都在y = x下面,不难想到向上取整函数的值都在直线上面
除此之外我们还可以证明x - 1 < ⌊x⌋ <= x <= ⌈x⌉ < x + 1, 且这个函数关于两个坐标轴互为反射
及⌊-x⌋ = -⌈x⌉ -⌊x⌋ = ⌈-x⌉
⌊x⌋ = n可以推出 n <= x < n + 1
⌊x⌋ = n 可以推出x - 1 < n <= x
⌈x⌉ = n 可以推出n - 1 < x <= n
⌈x⌉ = n 可以推出x <= n < x + 1
真题练习
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2186
题意:将n个人分成3分,第一份占1/2,第二份占2/3,其他的是第三份(向下取整)
其次,将这三份人分别分组,要求每十人为一组,问由多少组,不够10人仍为1组(向上取整)
解题思路:先向下取整再向上取整
参考代码
#include <stdio.h> #include <math.h> int main() { int T; scanf("%d", &T); while (T--) { double n; scanf("%lf", &n); double a = floor(n / 2); double b = floor((n - a) / 3 * 2); double c = n - a - b; int ans1 = ceil(a / 10); int ans2 = ceil(b / 10); int ans3 = ceil(c / 10); printf("%d\n", ans1 + ans2 + ans3); } return 0; }#笔记##读书笔记#