全wa疑问
查看原帖
全wa疑问
879686
Sonic_DrinKer楼主2024/3/3 21:41

测试样例点1: 1 -2 -1 2 答案: -1.00 1.00 2.00 输出和答案完全一样,样例点也一样,但是全wa,目前想不明白原因,求巨佬解答

#pragma warning(disable:4996)
#include <iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
#define LL long long
#define diff 0.005
double a, b, c, d;
double Cal(double x)
{
	return a * x * x * x + b * x * x + c * x + d;
}
void Func(double* ans,int&cnt, double l, double r)
{
	if (cnt == 3)return;
	double left = Cal(l), right = Cal(r);
	double mid = l + (r - l) / 2;
	if (left == 0)
	{
		ans[cnt++] = l;
		return;
	}
	if (r-l <= diff)
	{
		if (left * right < 0)
		{
			ans[cnt++] = mid;
		}
		 return;
	}

	Func(ans,cnt,l,mid);
	Func(ans, cnt, mid, r);
}
int main() 
{
	cin >> a >> b >> c >> d;
	double ans[3];
	int cnt = 0;//根的个数
	Func(ans, cnt, -100, 100);

	sort(ans, ans + 3, [](double a, double b)

		{
			return a < b;
		});

	for (int i = 0; i < 3; i++)
	{
		printf("%.2llf ", ans[i]);
	}
	return 0;
}

2024/3/3 21:41
加载中...