2 solutions

  • 6
    @ 2024-1-25 12:00:50

    AC呆马:

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    int main()
    {
       double a, b, c,d;
       cin >> a >> b >> c >> d;
       for(double i = -100;i <= 100; i+=0.001)
       {
          double j = i + 0.001 , y =a * i *i *i+b * i * i + c * i + d,x = a * j * j * j + b * j * j + c * j + d;
          if(y >= 0 && x <= 0 || y<=0 && x >= 0 )
    	  {
             double ans=(i + j) / 2;
             printf("%.2lf ",ans);
          }
       }
       return 0;
    }
    

    有一行敲得很累,所以请点个赞谢谢!!

    • -1
      @ 2024-2-23 14:00:26
      #include<bits/stdc++.h> 
      using namespace std;
      double minn=0.0000001;
      double m,a,b,c,d,e;
      int k=1;
      double f1(double x){
      	return a*x*x*x+b*x*x+c*x+d;
      }
      double f2(){
      	double l=-100;
      	double r=100;
      	for(double i=-100;i<100;i+=1.00000001){
      		l=i;
      		r=i+1;
      		if(f1(l)*f1(r)>0){
      			continue;
      		}
      		while(r-l>minn){
      		m=(l+r)/2;
      		if(f1(m)*f1(l)>0){
      			l=m;
      		}
      		else{
      			r=m;
      		}
      	}
      	cout<<setprecision(2)<<fixed<<r<<" ";
      	}
      }
      int main(){
      	cin>>a>>b>>c>>d;
      	f2();
      }
      
      • 1

      Information

      ID
      723
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      5
      Tags
      # Submissions
      54
      Accepted
      20
      Uploaded By