我嬲,这个二分哪里出问题了,dalao看一眼
查看原帖
我嬲,这个二分哪里出问题了,dalao看一眼
843596
Otion楼主2023/1/22 18:59
#include <iostream>

using namespace std;
double a, b, c, d;
double do_math(double x)
{
    return a * x * x * x + b * x * x + c * x + d;
}
int done = 0;
int main()
{
    cin >> a >> b >> c >> d;
    for (int i = -100; i <= 100; i++)
    {
        double left = i;
        double right = i + 1;
        if (do_math(left) == 0)
        {
            done++;
            printf("%.2lf", do_math(left));
            cout << " ";
        }
        if (do_math(left) * do_math(right) < 0)
        {
            while (right - left >= 0.001)
            {
                double mid = (left + right) / 2;
                if (do_math(mid) * do_math(right) <= 0)
                {
                    left = mid;
                }
                else
                {
                    right = mid;
                }
            }
            printf("%.2lf", left);
            cout << " ";
            done++;
        }
        if (done == 3)
        {
            break;
        }
    }
    return 0;
}
2023/1/22 18:59
加载中...