#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;
}
bool find(int sad)
{
if(f(sad)*f(sad+1)<=0) return true;
else return false;
}
int main()
{
double ans[4],ran[4];
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
int chy=1;
for(int i=-101;i<=99;i++)
{
if(find(i)==true) ran[chy++]=i;
if(f(i+1)==0) i++;
}
for(int i=1;i<=3;i++)
{
double mina=ran[i],maxa=ran[i]+1,mid;
while(maxa-mina>0.001)
{
mid=(mina+maxa)/2;
if(f(mid)==0) break;
else if(f(mid)*f(mina)<0) maxa=mid;
else if(f(mid)*f(maxa)<0) mina=mid;
}
printf("%.2lf ",mid);
}
return 0;
} #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;
}
bool find(int sad)
{
if(f(sad)*f(sad+1)<=0) return true;
else return false;
}
int main()
{
double ans[4],ran[4];
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
int chy=1;
for(int i=-101;i<=99;i++)
{
if(find(i)==true) ran[chy++]=i;
if(f(i+1)==0) i++;
}
for(int i=1;i<=3;i++)
{
double mina=ran[i],maxa=ran[i]+1,mid;
while(maxa-mina>0.001)
{
mid=(mina+maxa)/2;
if(f(mid)==0) break;
else if(f(mid)*f(mina)<0) maxa=mid;
else if(f(mid)*f(maxa)<0) mina=mid;
}
printf("%.2lf ",mid);
}
return 0;
}
没有输出。。。求助各位神犇