根据一些数学知识可知,整个函数是单调递减的,所以根据二分法找零点。
需要注意 浮点类型数字的比较方法。
#include#include #include int p, q, r, s, t, u;double calcu(double x) { return p * exp(-x) + q * sin(x) + r * cos(x) + s * tan(x) + t * pow(x, 2) + u;}int main() { while (scanf("%d%d%d%d%d%d", &p, &q, &r, &s, &t, &u) != EOF) { if (calcu(0) * calcu(1) > 0) { printf("No solution\n"); } else { double l = 0, r = 1; double mid; double midValue; while (r - l > 1e-9) { mid = (r + l) / 2; midValue = calcu(mid); if (midValue > 0) l = mid; else r = mid; } printf("%1.4lf\n", mid); } } return 0;}