3 条题解

  • 2
    @ 2025-9-20 18:52:37
    #include<bits/stdc++.h>
    using namespace std;
    double a,b,c,d;
    double f(double x){
    	return pow(x,3)*a+pow(x,2)*b+x*c+d;
    }
    int main(){
    	cin>>a>>b>>c>>d;
    	double l=0,r=0,mid=0;
    	for(int i=-100;i<100;i++){
    		l=i,r=i+1;
    		if(f(l)==0){
    			cout<<fixed<<setprecision(2)<<l<<' ';
    		}
    		if(f(l)*f(r)<0){
    			while(r-l>=0.001){
    				mid=(l+r)/2;
    				if(f(l)*f(mid)<0){
    					r=mid;
    				}
    				else{
    					l=mid;
    				}
    			} 
    			cout<<fixed<<setprecision(2)<<r<<' ';
    		}
    	}
    	return 0;
    }
    
    • -1
      @ 2023-12-10 21:04:16
      #include<bits/stdc++.h>
      using namespace std;
      int main(){
         double a,b,c,d;
         scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
         for(double i =- 100;i <= 100;i += 0.001){
            double j = i + 0.001;
            double y1 = a * i * i * i + b * i * i + c * i + d;
            double y2 = a * j * j * j + b * j * j + c * j + d;
            if(y1 >= 0 && y2 <= 0 || y1 <= 0 && y2 >= 0){
               double x = (i + j) / 2;
               printf("%.2lf ",x);
            }
         }
      	return 0;
      }
      
      
      • -1
        @ 2023-5-21 20:37:21

        暴力解决:

        #include <bits/stdc++.h>
        using namespace std;
        int main(){
        	double a,b,c,d;
        	cin >> a >> b >> c >> d;
        	for(double i = -100.00 ; i <= 100.01 ; i += 0.01) if(round((a * (i * i * i) + b * (i * i) + c * i + d) * 100) / 100 == 0) printf("%.2lf ",i);
        	return 0;
        }
        
        • @ 2023-5-21 21:46:16

          ?判断实数不能直接用判断等于知不知道

        • @ 2023-5-28 15:59:29

          @ 懒得用

      • 1

      信息

      ID
      653
      时间
      1000ms
      内存
      512MiB
      难度
      6
      标签
      递交数
      225
      已通过
      77
      上传者