Sqrt(x)

这题没多大技巧性,只是牛顿迭代法多用于数值计算,这里出现有些意外。
维基上有方法说明:http://zh.wikipedia.org/wiki/牛顿法
int sqrt(int x) {
if (x == 0)
return 0;
double x0 = 1.0;
while (1){
double x1 = 0.5 * x0 + (x / (2 * x0));
if (abs(x1 - x0) < 1e-6)
break;
x0 = x1;
}
return x0;
}

时间: 2024-10-13 02:11:28

Sqrt(x)的相关文章

[leedcode 69] Sqrt(x)

Implement int sqrt(int x). Compute and return the square root of x. public class Solution { //本题利用了牛顿迭代法:设r是f(x) = 0的根(x^2-k=f(x)),选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0 //)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值.

69. Sqrt(x)(LeetCode)

Implement int sqrt(int x). Compute and return the square root of x. 1 class Solution { 2 public: 3 int mySqrt(int x) { 4 long r = x; 5 while (r*r > x) 6 r = (r + x/r) / 2; 7 return r; 8 } 9 };

整数划分优化,时间复杂度O(n*sqrt(n))

基准时间限制:1 秒 空间限制:131072 KB 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种.由于数据较大,输出Mod 10^9 + 7的结果即可. Input 输入1个数N(1 <= N <= 50000). Output 输出划分的数量Mod 10^9 + 7. Input示例 6 Output示例 4 常见的方法是行不通的,这里dp[i][j]表示的是j个数字和为i的情况dp[i][j] = dp[i -

Leetcode 69. Sqrt(x) 求整数根 in Java

69. Sqrt(x) Total Accepted: 109623 Total Submissions: 418262 Difficulty: Medium Implement int sqrt(int x). Compute and return the square root of x. public class Solution { public int mySqrt(int x) { if(x==1) return 1; //注意此题返回值int,和sqrt返回值double不同 do

【模拟】HDU 5752 Sqrt Bo

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5752 题目大意: 定义f(n)=⌊√n⌋,fy(n)=f(fy-1(n)),求y使得fy(n)=1.如果y>5输出TAT.(n<10100) 题目思路: [模拟] 5层迭代是232,所以特判一下层数是5的,其余开根号做.注意数据有0. 队友写的. 1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h&g

sqrt 源代码

double Item_func_sqrt::val_real(){ DBUG_ASSERT(fixed == 1); double value= args[0]->val_real(); if ((null_value=(args[0]->null_value || value < 0))) return 0.0; /* purecov: inspected */ return sqrt(value);   //系统库中的函数}

[LeetCode] Sqrt(x)

Sqrt(x) Implement int sqrt(int x). Compute and return the square root of x. 解题思路: 这道题是求x的平方根. 解法1:基本的想法就是枚举,从1到n进行遍历,直到result*result>x,那么结果就是result-1. class Solution { public: int mySqrt(int x) { int result = 0; while((long long)result * result <= x

LeetCode:Sqrt(x) 解题报告

Sqrt(x) Implement int sqrt(int x). Compute and return the square root of x. SOLUTION 1: 参见:二分法总结,以及模板:http://t.cn/RZGkPQc 1 public class Solution { 2 public int sqrt(int x) { 3 if (x == 1 || x == 0) { 4 return x; 5 } 6 7 int left = 1; 8 int right = x

C2668: &#39;sqrt&#39; : ambiguous call to overloaded function(sqrt问题)

第一次做csdn上面的题目,自信满满没有在线编译(本地测试通过),直接提交了,竟然没拿到分,太坑了,出现这个问题C2668: 'sqrt' : ambiguous call to overloaded function 究其原因竟然是sqrt( x )这个出错 sqrt函数定义:double sqrt( double x); 换成 sqrt( (double) x )就行了 可惜没拿到分啊 C2668: 'sqrt' : ambiguous call to overloaded function