#2#4WA求助!
查看原帖
#2#4WA求助!
956316
77Glorious楼主2024/4/21 22:00
#include <bits/stdc++.h>

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

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


int main() {
	cin >> a >> b >> c >> d;

	for (int i = -100; i <= 100; i++) {//全区间枚举 
		double l = i, r = i + 1, mid;//设定每个根可能在的区间 
		if (fabs(f(l)) < eps)//左根 输出 
			printf("%.2lf ", l); 
		else if (fabs(f(r)) < eps)//右根作为下一个区间的左根下一轮输出 
			continue;
		else if (f(l)*f(r) < 0) //根在l和r间 
		{
			while (r - l > eps) //可以继续二分 
			{
				mid = (l + r) / 2;
				if (f(mid)*f(r)<=0) {//零点右偏 
					l = mid;
				} else //零点左偏 
					r = mid;

			}
			printf("%.2lf ", l);//不能继续二分了就输出l 
		}
	
	}

	return 0;
}
2024/4/21 22:00
加载中...