阿哲……好奇葩
查看原帖
阿哲……好奇葩
807120
ybc2025_11_LCH楼主2023/1/9 12:02
#include <cstdio>
#include <cmath>
using namespace std;

double A, B, C, D;
double Left, Right, Mid;

double Solve(double A, double B, double C, double D, double X) {
	return (X * X * X * A) + (X * X * B) + (X * C) + D;
}

int main(void) {
	scanf("%lf%lf%lf%lf", &A, &B, &C, &D);
	for (int Left = -100; Left < 100; ) {
		Right = ++Left;
		double LfTmp = Solve(A, B, C, D, Left);
		double RTmp = Solve(A, B, C, D, Right);
		if (LfTmp * RTmp > 0) continue;
		while (fabs(Left - Right) > 1e-3) {
			Mid = (Left + Right) / 2;
			double LTmp = Solve(A, B, C, D, Left);
			double MTmp = Solve(A, B, C, D, Right);
			if (LTmp * MTmp > 0) Left = Mid;
			else Right = Mid;
		}
		printf("%.2lf ", Mid);
		++Mid;
	}
	return 0;
}
// 输出0.00 1.00 2.00
2023/1/9 12:02
加载中...