社区讨论

50分求调

P1024[NOIP 2001 提高组] 一元三次方程求解参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mko41o2s
此快照首次捕获于
2026/01/21 22:20
上个月
此快照最后确认于
2026/01/22 17:56
上个月
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
double a,b,c,d;
double f(double x){
    return a*pow(x,3)+b*pow(x,2)+c*x+d;
}
double bisearch(double left,double right){
    if(!f(left)){
        return left;
    } 
    if(f(left)*f(right)<0){
        while(right-left>1e-3){
            double mid=(left+right)/2;
            if(f(mid)*f(right)<0){
                left=mid;
            }
            else{
                right=mid;
            }
        }
    }
    return 101;
}
int main(){
    scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
    for(double i=-100;i<=99;i++){
        double y1=bisearch(i,i+1);
        if(f(y1)<1e-6) printf("%.2lf ",y1); 
    }
}

回复

0 条回复,欢迎继续交流。

正在加载回复...