注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

HT·生活

123

 
 
 

日志

 
 

ex69 Sqrt(x)  

2015-05-18 22:00:36|  分类: leetcode |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

自己写开方函数,没什么特别的,就是用拟牛顿法写个函数就可以了。这里面有个坑,以后没什么事儿再也不用abs这个函数了,太坑人了!!!oj又因为这个不让过~~~

/*
time : 2015-5-18
author : ht
comment: 自己写函数开方
用牛顿法 递推公式为 m = (m + x/m)/2 x是输入值,m是自己取的是一个初始点
*/
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;

int mySqrt(int x) {
long double m = 1.0,tmp;
tmp = m*m - x;
if (tmp < 0)
tmp = tmp*(-1.0);

//看来以后要少用abs这个函数了,特别不靠谱,经常越界
while (tmp > 1e-5)
{
m = (m+ x / m) / 2;
tmp = m*m - x;
if (tmp < 0)
tmp = tmp*(-1.0);
}
return m;
}

int main()
{
int n = 2147395599;
printf("%d \n", mySqrt(n));
return 0;
}


  评论这张
 
阅读(15)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018