是精度不够的原因吗?
#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