书上的意思没懂
查看原帖
书上的意思没懂
1021623
AVLw楼主2023/9/27 01:34

深基书上条件是if (fabs(f(i)) < eps 然而实际上这样是75分。 改成if (f(mid) == 0)就过了

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

double a, b, c, d;
const double eps = 1e-4;

double f(double x) {
    return a * x * x * x + b * x * x + c * x + d;
}

double find(double l, double r) {
    while (r - l > eps) {
        double mid = (l + r) / 2;
        if (f(mid) == 0)
            return mid;
        if (f(l) * f(mid) < 0)
            r = mid;
        else
            l = mid;
    }
    return l;
}

int main() {
    cin >> a >> b >> c >> d;
    int mark = 0;
    for (double i = -100; i < 100&&mark != 3; i++) {
       
        if (f(i)==0) { // 使用 fabs 函数来比较浮点数是否接近零
            printf("%.2lf ", i);
            mark++;
            continue;
        }
        if (f(i) * f(i + 1) < 0) {
            printf("%.2lf ", find(i,i+1));
            mark++;
        }
    }
    return 0;
}

看题解大多也是if(f(mid) == 0) 到底用哪个

2023/9/27 01:34
加载中...