洛谷P1024/NOI题库7891(2.3)/NOIP2001提高组T1 一元三次方程求解
2015-10-23 23:01
369 查看
洛谷1024 一元三次方程求解
本题地址: http://www.luogu.org/problem/show?pid=1024
题目描述
有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。
提示:记方程f(x)=0,若存在2个数x1和x2,且x1< x2,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个根。
输入输出格式
输入格式:
一行,4个实数A,B,C,D。
输出格式:
一行,三个实根,并精确到小数点后2位。
输入输出样例
输入样例#1:
1 -5 -4 20
输出样例#1:
-2.00 2.00 5.00
其实说二分都有些勉强,爆搜都能过的水题(毕竟第一题···)
就是二分答案,找到三个就结束
看题:我用粗体标注出来的,所以使这题更加简单
在此ORZ用盛金公式的大神
了解盛金公式(虽然我不会)
好了,言归正传,把我的二分代码提供出来
本题地址: http://www.luogu.org/problem/show?pid=1024
题目描述
有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。
提示:记方程f(x)=0,若存在2个数x1和x2,且x1< x2,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个根。
输入输出格式
输入格式:
一行,4个实数A,B,C,D。
输出格式:
一行,三个实根,并精确到小数点后2位。
输入输出样例
输入样例#1:
1 -5 -4 20
输出样例#1:
-2.00 2.00 5.00
其实说二分都有些勉强,爆搜都能过的水题(毕竟第一题···)
就是二分答案,找到三个就结束
看题:我用粗体标注出来的,所以使这题更加简单
在此ORZ用盛金公式的大神
了解盛金公式(虽然我不会)
好了,言归正传,把我的二分代码提供出来
#include<iostream> #include<cstdio> #include<cstring> using namespace std; double a,b,c,d; int n=0; void Binary_Search(double l,double r) { if(n==3) return; double f1=l*l*l*a+l*l*b+l*c+d,f2=r*r*r*a+r*r*b+r*c+d,mid=(l+r)/2; if(f1*f2<0) if(r-l<0.001) { n++; printf("%.2lf ",mid); return; } if(r-l<0.001) return; Binary_Search(l,mid); Binary_Search(mid,r); } int main() { cin>>a>>b>>c>>d; Binary_Search(-100.0,100.0); return 0; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性
- C++ Custom Control控件向父窗体发送对应的消息