1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #include<iostream> using namespace std;
double a, b, c, d;
int main(){ scanf("%lf%lf%lf%lf", &a, &b, &c, &d); for(double i = -100; i <= 100; i += 0.001){ j = i + 0.001; double y1 = a*i*i*i + b*i*i + c*i + d; double y2 = a*j*j*j + b*j*j + c*j + d; if(y1 * y2 <= 0) { double x = (i + j) / 2; printf("%.2lf", x); } } return 0; }
#include<iostream> using namespace std;
double a,b,c,d;
double f(double x){ return a*x*x*x + b*x*x + c*x + d; }
int main(){ scanf("%lf%lf%lf%lf", &a, &b, &c, &d); for(double l = -100; l <= 100; l++){ double r = l + 1; if(f(l) == 0) printf("%.2lf ", l); if(f(l)*f(r) < 0){ double left = l, right = r; while(right - left > 1e-4){ double mid = (left + right) / 2; if(f(mid)*f(l) <= 0){ right = mid; }else left = mid; } printf("%.2lf ", left); } } return 0; }
|