若一个整数a为另一个整数b的平方,则称a为完全平方数,现在输入n个正整数,判断他们中有几个是完全平方数
这道底在小数据的时候可能比较简单,但遇到大数据的时候,就显得心有余而力不足了。
首先我们需要用long long,这种时候,我第一是想到用减法,开平方,用a-(int)a的方法,结果发现数字小于一定程度的时候,会近似的等于0,这个时候系统也通过了,默认其等于0,就算改成0.0也无法改变这个事实。
相等当然也是行不通的,理论上而言,永远都不能相信浮点数,浮点数不应该作为条件判断。
于是最终我们想到了用转换后的数字乘法,如果相等就是OK哒,如果不等的话证明开平方是小数。
这里可以用(long long)转换,也可以直接声明一个long long的变量,来存平方后的数,会自动转换为long long的值。
第二篇文章有近似判断的方法,告诉我们不是 == 0.0 而是要给其一个浮点数导致的误差区间。
源代码:
例子
代码如下 | 复制代码 |
#include |
例子
代码如下 | 复制代码 |
#include |
例子
代码如下 | 复制代码 |
bool isSqr(int n) bool isSqr(int n) |
个人倾向于使用第一种写法. 第二种和第一种其实差不多.
第三种, 需要判断(a-1)*(a-1) == n 吗? 我觉得不需要.
第四种, 基本上是错误的, 可能会漏掉某些完全平方数. 除非sqrt(n) >= n^0.5 恒成立
电神魔傀2街机免费版 官方版v1.2.1
下载三国战纪2手游腾讯渠道服 安卓版v2.41.0.0
下载三国战纪2手游抖音渠道服 安卓版v2.41.0.0
下载三国战纪2折扣服 安卓版v2.41.0.0
下载叫我大掌柜小米版 安卓版v7.4.4
叫我大掌柜小米版是这款模拟经营类手游的渠道服版本,在此版本中
cooking fever正版 安卓最新版v23.0.2
cooking fever正版是一款非常好玩的模拟经营类手游
咖啡厅的生活故事 最新版v1.7
咖啡厅的生活故事是一款模拟经营游戏,玩家们在游戏中可以经营一
迅猛龙模拟器金币不减反增版 v1.1.8
迅猛龙模拟器无限金币版是一款动物模拟类游戏,玩家们将在游戏中
泽塔奥特曼升华器免广告版 v1.4
泽塔奥特曼升华器去广告版是游戏的破解版本,在该版本中为玩家去