{算法竞赛入门经典}第二章 如何判断整数
来源:互联网 发布:mac上的迅雷下载不了 编辑:程序博客网 时间:2024/05/02 01:41
/*Date : 2010 - 4- 15*/
例题2-1 输出所有形如aabb的四位完全平方数(即前两位数字相等,后两位数字也相等)
一.思路1:
该题的大体思路是十分清晰的,即" 循环 + if "的搭档进行筛选.
具体点说就是通过2重循环将所有aabb数列举出来,再通过if来筛选出是完全平方数的数.
实现:
这里提到了一个常用的功能实现: 如何判断一个数是否是整数的问题.
原始的思路是利用floor(x)来取x的整数部分,再与x相比较,如果二者相等,则x是整数,反之则不是.
这里需要注意的一个问题是float型数据的精度问题,在大量计算中,由于float型对于
无限小数的运算也是属于近似运算,所以存在一定的误差,很容易出现的问题是:原本结果是1的,
得出的结果却是0.999999999.然而floor之后却变成了0,显然这是不正确的.因此需要处理这
种由精度引起的误差问题.
书中给出的方法是+0.5.这样就能很巧妙地避开上述的错误.原因如下:
i) 当x是整数时,加上0.5后变成x.5,再用floor处理后,仍然是x.可判断相等
ii)当x是小数时,加上0.5后再经过floor后变成整数,可判断不相等
iii)当x是类似于0.99999999的小数时,加上0.5后经过floor变成1,可判断相等
这里需要指出的一点是if判定相等的问题.当比较0.9999999与1时,会判定不相等.
当比较0.9999999与1时,会判定相等.(编译器是MinGW3.4.5)
即判断一个数x是否是整数的表达式: if(floor(x + 0.5) == x)
二.思路2
前面的思路是先将aabb形式的数列举出来,再用完全平方这个条件筛选.当然,我们
也可以先将一些数的完全平方计算出来,再判断是不是aabb型的数.
二者顺序不同,结果一样.
这段代码用到了我们平常编程比较少用到的continue语句,由continue和break组成的判断
组合可以做类似的定界判断.也可以好好体会下这种用法.
- {算法竞赛入门经典}第二章 如何判断整数
- 算法竞赛入门经典 第二章
- 算法竞赛入门经典第二章练习
- 算法竞赛入门经典第二章笔记
- 算法竞赛入门经典-第二章源代码
- 算法竞赛入门经典第二章
- 算法竞赛入门经典(第二章)
- 算法竞赛入门经典第二章习题
- 算法竞赛入门经典习题 第二章
- 算法竞赛入门经典第二章
- 算法竞赛入门经典 第二章 循环
- 算法竞赛入门经典第二版 第二章
- 算法竞赛入门经典第二章【小结与习题】
- 《算法竞赛入门经典》上机练习——第二章
- 算法竞赛入门经典第二章习题答案
- 算法竞赛入门经典第二章习题解答
- 《算法竞赛入门经典》读书笔记 第二章 循环结构程序设计
- 算法竞赛入门经典第二章习题解答
- 如何搭建struts平台
- 自定义应用程序配置文件(app.config)_c#应用
- GCC 环境变量设置
- C语言中可变参数的用法
- 正则表达式有关资料
- {算法竞赛入门经典}第二章 如何判断整数
- 环境变量设置大全
- 详解Linux下安装Eclipse和CDT开发C/C++
- shell 脚本学习指南
- js操作servlet请求
- Acegi基本介绍
- Ubuntu 中软件的安装、卸载以及查看的方法总结
- 浅谈C++中的引用(一)
- 【Silverlight】Bing Maps开发应用与技巧一:地图打点与坐标控件(CoordControl)