#include <stdio.h>
#include <math.h>
#define EPSILON 1e-7
double bisection(int p, int q, double (*func)(int, int, double));
double f(int p, int q, double x);
int main() {
int p;
int q;
scanf("%d%d", &p, &q);
double a = -20;
double b = 20;
double m;
double root;
do{
double m = (a + b) / 2;
if(f(p,q,m) == 0){
root == m;
break;
}else if(!f(p,q,m) * f(p,q,a)) {
b = m;
} else if(!f(p,q,m) * f(p,q,b)) {
a = m;
}
}while(fabs(f(p,q,m)) > EPSILON);
printf("%.4lf\n",f(p,q,m));
return 0;
}
double f(int p, int q, double x) {
return p * x + q;
}
每次程序运行时,输入为一行,包括一组被空格分隔开的符合描述的正整数 p 和 q 。你可以认为输入数据构成的方程 px + q = 0 都是有解且解在 [-20,20] 的区间内。
输出格式
输出为一行,包括一个数字。为方程px + q = 0 的近似解。请使用四舍五入的方式保留小数点后 4 位小数。