solution.md 2.1 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1
# x 的平方根
F
fix bug  
feilong 已提交
2

每日一练社区's avatar
每日一练社区 已提交
3 4 5 6 7 8 9
<p>实现&nbsp;<code>int sqrt(int x)</code>&nbsp;函数。</p>
<p>计算并返回&nbsp;<em>x</em>&nbsp;的平方根,其中&nbsp;<em>x </em>是非负整数。</p>
<p>由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。</p>
<p><strong>示例 1:</strong></p>
<pre><strong>输入:</strong> 4<strong><br />输出:</strong> 2</pre>
<p><strong>示例 2:</strong></p>
<pre><strong>输入:</strong> 8<strong><br />输出:</strong> 2<strong><br />说明:</strong> 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。</pre>
每日一练社区's avatar
每日一练社区 已提交
10
<p>以下<span style="color:red">错误</span>的选项是?</p>
F
fix bug  
feilong 已提交
11

每日一练社区's avatar
每日一练社区 已提交
12
## aop
F
fix bug  
feilong 已提交
13

每日一练社区's avatar
每日一练社区 已提交
14
### before
F
fix bug  
feilong 已提交
15

每日一练社区's avatar
每日一练社区 已提交
16
```c
每日一练社区's avatar
每日一练社区 已提交
17 18 19
#include <bits/stdc++.h>
using namespace std;
```
每日一练社区's avatar
每日一练社区 已提交
20

每日一练社区's avatar
每日一练社区 已提交
21
### after
F
fix bug  
feilong 已提交
22

每日一练社区's avatar
每日一练社区 已提交
23
```c
每日一练社区's avatar
每日一练社区 已提交
24 25 26 27 28 29 30 31 32 33 34 35 36
int main()
{
    Solution sol;

    int x = 8;
    int res;
    res = sol.mySqrt(x);
    cout << res;
    return 0;
}
```

## 答案
F
fix bug  
feilong 已提交
37

每日一练社区's avatar
每日一练社区 已提交
38
```c
每日一练社区's avatar
每日一练社区 已提交
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
class Solution
{
public:
    int mySqrt(int x)
    {
        long long i = 0;
        long long res;
        long long nextRes;
        for (i = 1; i <= x / 2 + 1; i++)
        {
            res = i * i;
            nextRes = (i + 1) * (i + 1);
            if (res < x && nextRes > x)
                break;
        }
        return i;
    }
};
```
## 选项

F
fix bug  
feilong 已提交
60

每日一练社区's avatar
每日一练社区 已提交
61
### A
F
fix bug  
feilong 已提交
62

每日一练社区's avatar
每日一练社区 已提交
63
```c
每日一练社区's avatar
每日一练社区 已提交
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
class Solution
{
public:
    int mySqrt(int x)
    {
        if (x == 0)
            return 0;
        double last = 0;
        double res = 1;
        while (res != last)
        {
            last = res;
            res = (res + x / res) / 2;
        }
        return int(res);
    }
};
```

### B
F
fix bug  
feilong 已提交
84

每日一练社区's avatar
每日一练社区 已提交
85
```c
每日一练社区's avatar
每日一练社区 已提交
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
class Solution
{
public:
    int mySqrt(int x)
    {

        long long i = 0;
        long long j = x / 2 + 1;
        while (i <= j)
        {
            long long mid = (i + j) / 2;
            long long res = mid * mid;
            if (res == x)
                return mid;
            else if (res < x)
                i = mid + 1;
            else
                j = mid - 1;
        }
        return j;
    }
};
```

### C
F
fix bug  
feilong 已提交
111

每日一练社区's avatar
每日一练社区 已提交
112
```c
每日一练社区's avatar
每日一练社区 已提交
113 114 115 116 117 118 119 120 121
class Solution
{
public:
    int mySqrt(int x)
    {
        return sqrt(x);
    }
};
```