蒟蒻样例只能找到两个答案,有没有大犇995
查看原帖
蒟蒻样例只能找到两个答案,有没有大犇995
932569
I_AM_Nigger楼主2023/7/7 17:35
#include<bits/stdc++.h>
using namespace std;
map<double,int> vis;
double a,b,c,d;
double x[4];
double f1,f2;
double check(double num)
{
    double sum = 0;
    sum = a * num * num * num + b * num * num + c * num + d;
    return sum;
}
int main()
{
    cin >> a >> b >> c >> d;
    double left = -100.00;double right = 100.00;
    double x1 = -100.00,x2 = 100.00;
    for(int i = 0;i<3;i++)
    {
        while(left < right)
        {
            if(x1 < x2 && f1 * f2 < 0)
            {
                left = x1;
                right = x2;
            }
            double midium = (left + right)/2.00;
            double a = (int)((check(midium)*1000+5)/10) / 100.0;
            cout << midium << " " << a << '\n';
            if(a < 0)
            {
                x1 = midium;
                f1 = a;
                left = midium + 0.001;
            }
            else if(a > 0)
            {
                x2 = midium;
                f2 = a;
                right = midium - 0.001;
            }
            else if(a == 0 && vis[midium] == 0)
            {
                x[i] = midium;
                vis[midium] = 1;
                // printf("%.2lf ",midium);
                break;
            }
            else
            {
                if(i == 1)
                {    
                    x1 = midium + 1;x2 = 100;
                }
                if(i == 2)
                {
                    left = x[0] + 1;right = x[1]-1;
                    x1 = left;x2 = right;
                }
            }
        }
    }
    sort(x,x+3);
    for(int i = 0;i<3;i++)
    {
        printf("%.2lf ",x[i]);
    }
    return 0;
}

我已经找了一下午了

2023/7/7 17:35
加载中...