P1024 一元三次方程求解(递归式二分)
整理的算法模板合集: ACM模板
我们判断两点(x)之间是否有根的依据是是否存在f(x)∗f(y)<0f(x) * f(y)<0f(x)∗f(y)<0
然后由于题目中说根于根之间的差的绝对值大于等于1,以及范围只有-100
到100
所以我们可以直接枚举,每次+1,缩小范围,然后二分答案精确到0.001即可。
需要注意的是由于我们枚举的时候是从-100到100挨个枚举的所以我们在输出的时候l和r我们只能输出一个,因为一个输出以后另一个由于循环一定会再次到达这个点。所以我们枚举到99,只输出r(l = i, r = i + 1
)
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<cstring>using namespace std;
typedef long long ll;
const int N = 200007;
const double eps = 1e-3;
//int a[N];
double a, b, c ,d;
int n, m;
double ans;double f(double x)
{return a * x * x * x + b * x * x + c * x + d;
}void solve(double l, double r)//二分x的坐标找那个点
{if(l + eps >= r){printf("%.2f ", l);return ;}double mid = (l + r) / 2.0;double ans_l, ans_r;//if(f(l) == 0)printf("%.2f ", l);if(f(mid) == 0)printf("%.2f ", mid);if(f(r) == 0)printf("%.2f ", r);ans_l = f(l) * f(mid);ans_r = f(r) * f(mid);if(ans_l < 0)solve(l, mid);else if(ans_r < 0)solve(mid, r);
}
//一元三次方程一个根的两端的小范围一定是单调的所以可以用二分
int main()
{scanf("%lf%lf%lf%lf", &a, &b, &c, &d);for(double i = -100; i <= 99; ++ i){if(f(i) * f(i + 1.0) <= 0){//缩小范围,小于0说明有根solve(i, i + 1.0);}}return 0;
}
P1024 一元三次方程求解(递归式二分)相关推荐
- 洛谷 P1024 一元三次方程求解 (暴力 or 二分 or 盛金公式)
P1024 一元三次方程求解 题意 有形如:ax3+bx2+cx+d=0ax^3+bx^2+cx+d=0ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,da, ...
- P1024 一元三次方程求解 牛顿迭代+盛金公式+二分+勘根定理
P1024 一元三次方程求解 传送门 题目描述 有形如:ax^3+bx^2+cx^1+dx^0=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实 ...
- 洛谷 [P1024]一元三次方程求解【二分答案】
题目链接:https://www.luogu.org/problemnew/show/P1024 题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b ...
- [NOIP2001] 提高组 洛谷P1024 一元三次方程求解
题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...
- 洛谷 P1024 一元三次方程求解
不会二分就暴力计算 提示:记方程f(x)=0f(x)=0,若存在22个数x_1x1和x_2x2,且x_1<x_2x1<x2,f(x_1) \times f(x_2)<0f(x ...
- P1024 一元三次方程求解 两种方法
二分 #include<bits/stdc++.h> using namespace std; double a,b,c,d; double fun(double x){double nu ...
- 【luogu 1024 一元三次方程求解】二分思想
题目出自luogu 1024 一元三次方程求解 描述: 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根( ...
- 洛谷——P1024 [NOIP2001 提高组] 一元三次方程求解
P1024 [NOIP2001 提高组] 一元三次方程求解 题目描述 有形如:a x^3 + b x^2 + c x + d = 0a**x3+b**x2+c**x+d=0 这样的一个一元三次方程.给 ...
- P1024 [NOIP2001 提高组] 一元三次方程求解 /1238:一元三次方程求解
P1024 [NOIP2001 提高组] 一元三次方程求解 /1238:一元三次方程求解 # [NOIP2001 提高组] 一元三次方程求解 ## 题目描述 有形如:$a x^3 + b x^2 + ...
最新文章
- 大赛归来的你们,依然青春少年
- 分摊的意思_接了两单顺风车遇到几个有意思乘客,后来把顺风车软件删了
- python3精要(23)-递归与函数列表
- IP地址与子网掩码总结
- plsql cursor 函数
- VM异常关闭后导致虚拟机无法打开问题解决办法【已解决】
- 单片机ADC采样算法----卡尔曼滤波
- PECL PEAR php扩展模块的简便安装方式
- flex右对齐_移动WEB开发 — Flex布局
- rk3399_android7.1读写sn和eth mac地址
- 程序员求职之道(《程序员面试笔试宝典》)之程序设计基础(static的使用)?...
- 最近卡脖子的汽车芯片产业链全景图(车规级芯片)
- 锐起无盘找不到服务器,锐起无盘出现重启后连接不到服务器
- Exception in thread “main“ java.nio.file.NoSuchFileException: 123.txt
- 如何将eclipse项目和svn关联(从服务器取项目)
- 牛客网 2018校招真题 爱奇艺 最后一位
- python:中文词法分析(LAC)
- 蚂蚁开放联盟链已全面公测,预计2月全面上线 | 产业区块链周报
- 好书分享:《精装版|VirtualLab Fusion高速物理光学软件中文手册》
- 安装rabbitmq图文详情记录