Time Limit: 3 second
Memory Limit: 2 MB

有形如ax^3+bx^2+cx+d=0的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值≥1。要求由小到大依次在同一行输出这三个实根。(根与根之间留有空格),并精确到小数点后2位。

Input

输入文件仅一行
依次输入a,b,c,d用空格隔开

Output

输出仅一行,三个实根(根与根之间留有空格,最后用回车结束)

Sample Input

1 -5 -4 20

Sample Output

-2.00 2.00 5.00

【题解】

从-10000枚举到10000,然后除100,得到的就是-100.00到100.00,然后代入f函数,算出函数值,每次取两个值f(x1),f(x2),如果f(x1)*f(x2)<0,则表明x1-x2之间有一个解,这里我直接输出x1。因为是浮点数 所以等号无效。则相等要写成f(x)-0<0.000.......这样的形式.判断一下f(x1)或f(x2)是否近似等于0,如果是则直接输出x1或x2.

【代码】

#include <cstdio>double a,b,c,d;
double ans[100];
int number = 0;void input_data()
{scanf("%lf %lf %lf %lf",&a,&b,&c,&d); //输入a,b,c,d
}   double get_number(double x) //计算f(x)函数
{double ans = a*x*x*x+b*x*x+c*x+d;return ans;
}void get_ans()
{int i = -10010; //开始枚举 while (i <= 10010){double temp1 = i;double temp2 = i+1;temp1 = temp1/100;temp2 = temp2/100;double d1,d2;d1 = get_number(temp1);d2 = get_number(temp2);//获取f(x1)和f(x2) double j = d1 * d2; //计算f(x1)*f(x2) if (j <=0)  //判断符号 {if ((0-j) < 0.00001) //如果这个值无限接近0 {if (d1 <0) d1=-d1;if (d2 <0) d2=-d2;if ((d1-0) <0.00001) ans[++number] = temp1; else ans[++number] = temp2;   //判断一下哪一个值是等于0,则增加1解 }   else{ans[++number] = temp1;}i+=98; //有提到两个解之间的差>1,则直接+100 } elsei++;}
}void output_ans()
{printf("%.2lf %.2lf %.2lf\n",ans[1],ans[2],ans[3]);  //输出要用.xlf,x为保留位数
}int main()
{//freopen("E:\\rush.txt","r",stdin);input_data();get_ans();output_ans();return 0;
}

转载于:https://www.cnblogs.com/AWCXV/p/7632499.html

【2031】求一元三次方程的解相关推荐

  1. 迭代法求一元三次方程

    迭代法求一元三次方程 简介:本文讲解如何使用迭代法来解,一元三次方程. 题目: 设计精度函数: #include<iostream> #include<cmath> using ...

  2. 用C语言求一元二次方程的解

    一元二次方程ax^2+bx+c=0的求解有下列几种情况: 1.当a=0时,该方程不是一元二次方程的解. 2.当a≠0时,该方程是一元二次方程. (1)当b^2-4ac=0时,只有一个解: (2)当b^ ...

  3. 【python求一元三次方程】

    python求一元三次方程 # 方程求解 import sympy as sy import sympy import sympy as sp # 导入sympy包 import matha=math ...

  4. C语言——二分法求一元三次方程的方程根

    C语言--二分法求一元三次方程的方程根 #include <stdio.h>#include <math.h>int main() {double m, n;double i ...

  5. C语言 求一元二次方程的解,考虑所有情况

    求一元二次方程的解,考虑所有情况 假设:ax²+bx+c=0 要求输入a,b,c的值,判断并求出方程的解. 有以下几种情况: 1.a = 0 (1)b = 0 c = 0时,x可以是任意数: c != ...

  6. 一元三次方程重根判别式_如何求一元三次方程

    我们知道,一元二次方程 的根可以通过求根公式 计算 那一元三次方程的根如何求?进行百度的话,我们可以发现一元三次方程可以采用卡尔丹公式和盛金求根公式来计算.下面用最基础的代数方法来理解卡尔丹公式怎么来 ...

  7. python求一元三次方程的根_关于二次、三次、四次方程求解方法讨论

    高次方程求解的一般方法是将高次方程通过配方求解,然后进行次数降解,高次方程转化为容易求解的低次方程. 一元二次方程 求解高次方程,一元二次方程是最为简单的方程.关于一元二次方程 ,通过配方法可以求解: ...

  8. python求一元三次方程的根_【九年级 】知识点8 一元二次方程根的判别式的应用...

    知识点8 一元二次方程根的判别式的应用 [题目预览] [视频讲解] [分析点评] 此题考查一元二次方程根的判别式与一元二次方程根的情况,当判别式的值大于0时,方程有两个不相等的实数根,当判别式的值等于 ...

  9. Python 求一元二次方程的解

     知识点 调用 math.sqrt() 函数求一个数的平方根: 使用 def 自定义一个函数时,函数返回值使用 return 返回: 函数体内部的语句在执行时,一旦执行到 return 时,函数就执行 ...

  10. 【java】求一元二次方程的解

    数学知识点掌握好这个不是难题 看代码就可以看懂 //求一元二次方程a*x*x+b*x+c = 0 的根, a,b,c的数据从键盘输入 import java.util.*; public class ...

最新文章

  1. Silverlight的4个版本
  2. 配置启动MySQL的Docker容器
  3. java如何得到GET和POST请求URL和参数列表(转)
  4. openvc学习笔记(4)——两种方法在没有环境下运行程序
  5. mysql 字符串转long_把数据库中的字符串格式转为long类型
  6. pointcut注解_Spring AOP使用指南,详细了解AOP相关注解
  7. Visualvm 远程测试 问题
  8. 2010中小网站运营报告:社区论坛网站后来居上
  9. 深度学习笔记(四):循环神经网络的概念,结构和代码注释
  10. Nginx系列(6):Web服务器分析(理论)
  11. 数字图像处理(matlab版)第三版,数字图像处理及MATLAB实现(第3版)
  12. RK3399 Android7.1 AP6212蓝牙可发文件,但收不到文件
  13. python 读取并显示图片的两种方法
  14. Java开发者必备十大学习网站
  15. react 网页截图
  16. Uncaught initialization exception thrown by servlet
  17. “互联网+”拯救了星巴克
  18. 抗干扰神器光耦的原理及应用
  19. matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...
  20. 当效益不好的时候为什么公司选择裁员,而不是降薪

热门文章

  1. 【渝粤教育】电大中专电子商务网站建设与维护作业 题库
  2. 【渝粤教育】广东开放大学 java程序设计基础 形成性考核 (39)
  3. ubuntu16.04中安装MESA 17.3.3
  4. 【算法与数据结构】二叉堆和优先队列 Priority Queue
  5. MySQL数据库删除数据(有外键约束)
  6. 【BZOJ2816】【洛谷】【ZJOI2012】—网络(LCT)
  7. (转载)排序六 堆排序
  8. 【转】架构师是一个很不错的方向
  9. mysql_udf_http(根据mysql表自动触发发送http请求)
  10. 洛谷P5300 与或和(全1子矩阵/单调栈)