|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- // 这题其实得用二分来做,为实数的二分
- #include <bits/stdc++.h>
- using namespace std;
- double a,b,c,d;
- double solve(double x)
- {
- return a*x*x*x+b*x*x+c*x+d;
- }
- int main()
- {
- cin>>a>>b>>c>>d;
- for(double i=-100;i<=100;i++) //即在-100到100中一个一个区间去判断
- {
- double x1=i,x2=i+2.0;
- if(solve(x1)==0.0)printf("%.2lf",i); //如果带进去x1==0,则说明就是此方程的根
- if(solve(x1)*solve(x2)<0)//标明此处必有一个根,然后去判断
- {
- while(x2-x1>=0.001)
- {
- double mid=(x1+x2)/2.0;
- if(solve(x1)*solve(mid)<=0.0)x2=mid;
- else x1=mid;
- }
- printf("%.2lf",x1);
- }
- }
- return 0;
- }
复制代码
其中有一个地方不懂x2-x1>=0.001 |
|