dalao求助为什么50分
查看原帖
dalao求助为什么50分
1340313
mowanggao楼主2024/5/10 10:43
#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;
const double eps=1e-5;
double a,b,c,d;
double l,r,x1,x2;
double f(double x){
	return a*x*x*x+b*x*x+c*x+d;
}
double twofen(double left,double right){
	double mid;
	while(right-left>eps){
		mid=(left+right)/2;
		if(f(mid)>0){
			right=mid;
		}
		else left=mid;
	}
	return mid;
}
int main(){
	cin>>a>>b>>c>>d;
	int s=0;
    //枚举区间因为每个根相差》=1在区间一中最多有1个解,解左右两个函数值肯定是异号的 
	for(int i=-100;i<=100;i++){
		l=i;
		r=i+1;
		x1=f(l);
		x2=f(r);
		if(!x1){//判断x1是否为0如果x2也判断会输出重复,只是左端点就没问题 
			printf("%.2f",l);
			s++;
			if(s<3)printf(" ");
		}
		else if(x1*x2<0){
			printf("%.2f",twofen(l,r));
			s++;
			if(s<3)printf(" ");
		}
		if(s==3)break;
	}
	return 0;	
}
2024/5/10 10:43
加载中...