洛谷p1024
有两种解法:
一、遍历-100~100
因为根的范围给了我们,并且根于根之差绝对值>=1,我们可以用遍历的方法。如果遇到整数卡恰好是根,输出,如果根不是整数(必定在两个相差1得整数之间),就在两整数之间用二分法,控制精度后输出。
需要注意,为避免重复验证(i与i+1,i++后可能重复)需要在输出后添加一步处理。
#include<stdio.h>
double f(double a,double b,double c,double d,double x){
double f=(((a*x+b)*x)+c)*x+d;
return f;
}
int main(){
double a,b,c,d,i,f1,f2,f3;
scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
for(i=-100;i<=100;i++){
f1=f(a,b,c,d,i);
f2=f(a,b,c,d,i+1);
if(f1*f2<=0){
if(f1==0){
printf("%.2lf ",i);
}
else if(f2==0){
printf("%.2lf ",