1 solutions

  • 0
    @ 2025-11-5 15:46:19

    C++ :

    #include<iostream>
    
    #include<cmath>
    
    using namespace std;
    
    double x[3];
    
    double a,b,c,d,u,v;
    
    int i,t;
    
    double f(double x)
    
     {
    
         double temp;
    
         temp=((a*x+b)*x+c)*x+d;
    
         return temp;
    
     }    
    
    int main()
    
     {  
    
             while(cin>>a>>b>>c>>d)
    
          {
    
              t=-1;
    
              for(i=-100;i<=100;i++)
    
               {
    
                   u=double(i);
    
                   v=u+0.99999;
    
                   if(fabs(f(u))<0.00001||f(u)*f(v)<=0)
    
                    {
    
                        t++;
    
                        if(fabs(f(u))<0.00001)
    
                           x[t]=u;
    
                        else
    
                           {
    
                            while((u+0.001<v)&&fabs(f((u+v)/2))>=0.00001)   
    
                               
    
                               {
    
                                   if(f(u)*f((u+v)/2)<0)
    
                                     v=(u+v)/2;
    
                                   else
    
                                     u=(u+v)/2;  
    
                               } 
    
                            x[t]=(u+v)/2;      
    
                           }       
    
                    }    
    
               }    
    
          cout.setf(ios::fixed);
    
          cout.precision(2);
    
          cout<<x[0]<<" "<<x[1]<<" "<<x[2]<<endl;
    
          } 
    
         
    
         return 0;
    
     }    
    
    
    

    Pascal :

    Program a2;
    Var
        t,k:integer;
        a,b,c,d,x:extended;
        ans:array[1..3] of extended;
    Function f(x:extended):extended;
       Begin
            f:=a*x*x*x+b*x*x+c*x+d;
       End;
    
    Begin
        t:=0;
        Read(a,b,c,d);
        For k:=-10000 to 10000 do
            Begin 
                x:=k/100;
                If  (f(x-0.005)*f(x+0.005)<0 ) or  (f(x-0.005)=0) then 
                 begin
                    inc(t);
                    ans[t]:=x;
                 end;
            End;
        writeln(ans[1]:0:2,' ',ans[2]:0:2,' ',ans[3]:0:2);
    End.
    
    
    • 1

    Information

    ID
    17150
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By