开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 24 天,点击查看活动详情
浮点数是否相等
一般我们不会用 == 来判断两个浮点数是否相等,这是因为浮点数可能会产生精度误差。
正确的方法就是比较这两个浮点数的差值是否足够小(小于一定程度)。例如,假设现在有两个浮点数变量 a 和 b ,如果 fabs(a-b) < 1e-6 成立,那么就可以认为这两个浮点数相等。至于差值要小到多少,具体看实际需求,一般来说不超过 1e-6 即可。
min 和 max
min() 和 max() 函数可以用于获取较小值和较大值。
注意,需要导入
<algorithm>头文件。
比如:
minNum = min(a, b);
上述语句的意思是变量 minNum 取 a 和 b 的较小值。
随机数
为了让计算机产生一个随机数,我们可以使用 rand() 函数来产生一个 0 到 RAND_MAX 的整数。其中 RAND_MAX 是一个常量,其值与编译器和系统有关。而且别忘了加上头文件 <cstdlib>。
我们可以使用 rand() % a 来产生一个 0 到 a - 1 的随机数。如果想产生一个 a 到 b 的随机数,则可以使用 rand() % (b-a+1) + a。
一般来说,Windows 下的
RAND_MAX值为 32767,而 Linux 下,其值为 int 的最大值。
计算机通过特定的算法( rand() 函数)来生成 “伪随机数”,因此每次执行随机数算法 rand() 之前,一般都需要“喂给它”不同的初始值作为随机数种子,这里使用 srand() 函数。注意,只有生成随机数种子后,算法生成的不同随机数才能是比较好的。这里喂给它当前的时间就是一个比较好的选择,即 srand(time(0))(需要导入头文件 <ctime>).
[NOIP2013 普及组] 计数问题
- 题目描述
试计算在区间 到 的所有整数中,数字 ()共出现了多少次?例如,在 到 中,即在 中,数字 出现了 次。
- 输入格式
个整数 ,之间用一个空格隔开。
- 输出格式
个整数,表示 出现的次数。
- 样例输入
11 1
- 样例输出
4
- 提示
对于 的数据,,。
- 分析:
从 1 到 n 枚举,将每一个值赋给一个临时变量,比如 temp,然后处理 temp。这里得创建一个计数器变量 count,接着对于每一个 temp,首先除以 10 取余数(%10),这样就得到它的个位数,再判断该数是否等于 x。如果等于 x ,则计数器自增加一。接着把 temp 自除 10,这样就把原来的个位数去掉了。最后再重复之前的流程即可。
- 代码举例: