朴素二分,想问问为什么只有50分呢?
查看原帖
朴素二分,想问问为什么只有50分呢?
1051616
duck_lite楼主2024/8/12 17:34

是精度不够的原因吗?

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll N = 2e5 +5;
ll T=0; 

double a,b,c,d; //二分控制精度的方法 
double f(ll x){
	
	return a*x*x*x+b*x*x+c*x+d ;
} 
void solve(ll n){
	double l=n-0.0001,r=n+1+0.0001;double m; 
	while(l+0.0001<r){
		 m=(l+r)/2.0;
		if(f(m)*f(l)>0)l=m;
		else r=m;	 
	} printf("%.2lf ",r);
} 
int main() 
{	
	cin>>a>>b>>c>>d;
	for(ll i=-100;i<100;++i){
		if(f(i)==0)printf("%.2lf ",i*1.00);
		else if(f(i)*f(i+1)<0){
			solve(i); 
		} 
	} 
    return 0;
}

先提前感谢大佬orz

2024/8/12 17:34
加载中...