hdu 5105
题意: y=|a*x^3+b*x^2+c*x+d| 求y的最大值?
题目是bc上的,之前写的时候,没考虑0的情况(太笨了)。。。。
水题吧。。。。
AC代码:
#include <iostream> #include <stdio.h> #include <cmath> #include <algorithm> #define max(a,b) (a>b)?a:b; using namespace std; double a,b,c,d,l,r,ans; double s(double x) //计算函数 { if(x>=l&&x<=r) return abs(a*x*x*x+b*x*x+c*x+d); return -1; } double ss(double a,double b,double c) { if(a==0) //这里只要考虑a=0的情况 return s(-c/b); double d = b*b-4*a*c; if(d>0) return max(s((-b+sqrt(d))/2/a),s((-b-sqrt(d))/2/a)); return -1; } int main() { while(scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&l,&r)!=EOF) { ans = max(s(l),s(r)); ans = max(ans,ss(3*a,2*b,c)); printf("%.2lf\n",ans); } return 0; }