网易笔试题--寻找优雅点
2016-09-12 21:32
211 查看
今天在做网易笔试题的时候吃了一个血的教训,没有注意到隐式转换。
题大概是这样的,给一个圆的周长,求圆上横纵坐标都为整数的点。
如: 25
(0,5)(0,-5)(5,0)(-5, 0)(3,4)(3,-4)(4,3)(-4,3)共8个。
我是采用这么做的,目前这样做,有更好办法我会更新此篇博客的。
代码如下:
第一次失败:
修改后成功:
另外,谁有更好方法可以留言,互相学习。
题大概是这样的,给一个圆的周长,求圆上横纵坐标都为整数的点。
如: 25
(0,5)(0,-5)(5,0)(-5, 0)(3,4)(3,-4)(4,3)(-4,3)共8个。
我是采用这么做的,目前这样做,有更好办法我会更新此篇博客的。
代码如下:
#include <iostream> #include <assert.h> #include <math.h> using namespace std; void find_point(int circle, int* ans) { assert(circle >= 0); if(circle == 0){ *ans = 1; return ; } int rad = sqrt(circle); /* for(int i=0; i<=rad; ++i) for(int j=0; j<=rad; ++j) 上面这两句是我动笔直接写的做法,很遗憾,直接失败。原因在于,sqrt函数的返回值为double类型, 结果我在下面采用i<rad,j<rad,这样的比较方法,i和j被强制转化成了double类型,++i,++j实际上加了 double类型的单位量,如下第一幅图,结果可想而知。 */ for(int i=0; i<=rad; i+=1){ for(int j=0; j<=rad; j+=1){ if((pow(i, 2)+pow(j, 2)) == circle) ++*ans; } } *ans *= 2; } int main(int argc, char**argv) { int ans = 0; int circle; cin >> circle; find_point(circle, &ans); cout << ans << endl; return 0; }
第一次失败:
修改后成功:
另外,谁有更好方法可以留言,互相学习。
相关文章推荐
- 网易云音乐8亿用户背后的伤疤
- 用于提取网易文件的hta代码
- Android仿网易一元夺宝客户端下拉加载动画效果(一)
- 详解MySQL中的SQRT函数的使用方法
- go语言实现sqrt的方法
- Android项目实战之仿网易顶部导航栏效果
- js实现仿网易点击弹出提示同时背景变暗效果
- Android实现仿网易新闻主界面设计
- 离线缓存
- 网易热开始内测 类digg社交新闻平台
- 营销人又有活干了:易信公众平台开始内测
- 唯快不破的互联网竞争下,慢热谨慎、不追风口的网易为什么能做到280亿美元市值?
- 网易云音乐产品负责人亲述:云音乐各产品发展阶段的实战经验
- 网易大力推广网站联盟
- 网易微博即将倒闭
- [转]传网易轻博客即将上线 用独立域名lofter.com
- centos redhat 国内yum源