一元三次方程求解(信息学奥赛一本通-T1238)
【题目描述】
形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。
给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在−100至100之间),且根与根之差的绝对值≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。
【输入】
一行,包含四个实数a,b,c,d,相邻两个数之间用单个空格隔开。
【输出】
一行,包含三个实数,为该方程的三个实根,按从小到大顺序排列,相邻两个数之间用单个空格隔开,精确到小数点后2位。
【输入样例】
1.0 -5.0 -4.0 20.0
【输出样例】
-2.00 2.00 5.00
【源程序】
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#define INF 999999999
#define N 50001
#define MOD 1000000007
#define E 1e-5
using namespace std;
double a,b,c,d;
double calculate(double x)
{double ans=0;double y=1;for(int i=1;i<=3;i++)y*=x;y*=a;ans+=y;y=1;for(int i=1;i<=2;i++)y*=x;y*=b;ans+=y;y=1;y*=x;y*=c;ans+=y;ans+=d;return ans;
}
int main()
{double x=-100,x1,x2,x3;cin>>a>>b>>c>>d;while(x-100<=E){if(fabs(calculate(x))<=E)break;x+=0.01;}x1=x;x+=0.01;while(x-100<=E){if(fabs(calculate(x))<=E)break;x+=0.01;}x2=x;x+=0.01;while(x-100<=E){if(fabs(calculate(x))<E)break;x+=0.01;}x3=x;printf("%.2lf %.2lf %.2lf\n",x1,x2,x3);return 0;
}
一元三次方程求解(信息学奥赛一本通-T1238)相关推荐
- 求一元二次方程(信息学奥赛一本通-T1058)
[题目描述] 求一元二次方程ax^2+bx+c=0的根,其中a不等于0.结果要求精确到小数点后5位. [输入] 输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程ax^2+ ...
- 信息学奥赛一本通(1238:一元三次方程求解)
1238:一元三次方程求解 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6364 通过数: 3241 [题目描述] 形如:ax^3+bx^2+cx+d= ...
- 【信奥赛一本通】1238:一元三次方程求解(详细代码)
[分治算法]一元三次方程求解 1.[题目描述] 2.[代码] 1.[题目描述] [题目描述] 形如:ax3+bx2+cx+d=0 这样的一个一元三次方程. 给出该方程中各项的系数(a,b,c,d均为实 ...
- 信息学奥赛一本通(1101:不定方程求解)
1101:不定方程求解 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 18175 通过数: 14383 [题目描述] 给定正整数a,b,c.求不定方程 a ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通在线提交地址
信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...
- 信息学奥赛一本通(C++版)NOIP提高组(1820-1829)
信息学奥赛一本通(C++版)NOIP提高组目录 //1820 [题目描述] 我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所 处位置的(值减1)为指数,以10为底数的幂之和的 ...
最新文章
- 场景解析--Pyramid Scene Parsing Network
- flask 读取 csv
- CodeDom 笔记整理
- 机器学习:使用numpy实现数据增强(Data Augmentation)
- asp.net core源码飘香:Logging组件
- 网络——发送email(一个简单荔枝)
- ASP.NET MVC的路由
- 数据结构链表之符号表,Python3实现——8
- 爬虫:验证码识别准确率(Tesseract-OCR)
- iOS11最新隐私信息访问列表
- 多数据点拟合曲线,最小二乘法,矩阵
- 多项目管理中PMO的作用
- 博客园2013年5月份第2周源码发布详情
- java 排序返回索引_java数组排序和索引
- 一不做,二不休, 干脆把开局库更换的批处理文件也调试好放出来...
- CSU2080: 航行日志的修复
- SQL脚本得到Epicor客制化信息
- jupyter添加快捷方式
- Hive自定义函数报错10014 :No matching method for class
- 箭头函数与普通函数,以及使用场景