rt,我没对sum有任何清零的操作,怎么加着加着就成0了..???
#include <bits/stdc++.h>
using namespace std;
double a,b,c,d;
double ans[3];
int sum = 0;
double dis(double x){
return a *x *x * x + b * x * x + c * x + d;
}
void solve(double l,double r){ //可以认为其递增
while(r - l > 0.0000001){
double mid = (r + l) / 2;
if(dis(mid) == 0){
ans[++sum] = mid;
return;
}else if(dis(mid) > 0){
r = mid - 0.000001;
}else{
l = mid;
}
}
}
int main(){
cin >>a >> b >> c >>d;
for(int l = -100,r = -99; r <= 100;r++){
// cout << dis(r) <<endl;
if(dis(l) > 0 && dis(r) < 0){
// cout << 1 << endl;
solve(r,l);
l = r + 1,r = l;
}
if(dis(r) > 0 && dis(l) < 0){
// cout <<2 << endl;
solve(l,r);
l = r + 1;
r = l;
}
if(dis(l) == 0){
// cout << 3 << endl;
ans[++sum] = l;
l = r;
r = l;
}
if(dis(r) == 0){
// cout << 4 << endl;
ans[++sum] = r;
cout << sum << endl;
l = r + 1;
r = l;
}
}
cout << sum << endl;
sort(ans+1,ans+1+sum);
for(int i = 1; i <= sum; i++){
printf("%.2lf ",ans[i]);
}
return 0;
}