题解 | #特殊的产奶量#

特殊的产奶量

https://www.nowcoder.com/practice/7780f80e7ece45928c7c138a20fede91

知识点

二分

思路

使用二分维护左右两个端点l,r,每次根据与x的关系来判断l和r的更新。由于题目只要两位小数,所以维护一个r-l>0.001就够了。

代码c++

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param x int整型
     * @return string字符串
     */
    string mySqrt(int x) {
        // write code here
        x = double(x);
        double l = 0;
        double r = x;
        double ans = 0;
        string t = "0.00";
        //二分求t,t即为答案
        while (r - l >= 0.001) {
            double mid = (l + r) / 2;
            cout << ":" << mid << endl;
            cout << ":::" << abs(mid * mid - x) << endl;

            if (abs(mid * mid - x) <= 0.001) {//当前答案合法,更新并太退出循环
                // cout<<1<<endl;
                t = to_string(mid);
                break;
            }

            if (mid * mid - x < 0.001)l = mid;
            else if (mid * mid - x > 0.001 )r = mid;
            t = to_string(mid);
        }

//截取小数点以及其后两位(题目不知道说的什么)
        string anss;
        // cout << ans << endl
        for (int i = 0; i < t.size(); i++) {
            if (t[i] == '.') {
                anss += t[i];
                anss += t[i + 1];
                anss += t[i + 2];
                break;
            } else anss += t[i];
        }
        cout << anss << endl;
        return anss;

    }
};
全部评论

相关推荐

11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务