试题 算法训练 一元三次方程求解

简介: 试题 算法训练 一元三次方程求解

试题 算法训练 一元三次方程求解

资源限制

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

  有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求三个实根。。

输入格式

  四个实数:a,b,c,d

输出格式

  由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位

样例输入

1 -5 -4 20

样例输出

-2.00 2.00 5.00

数据规模和约定

  |a|,|b|,|c|,|d|<=10

提交代码:

#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
double a,b,c,d;
double ans[5];
int k=0;
double f(double x)
{
  return a*x*x*x+b*x*x+c*x+d;
}
int main()
{ 
  cin>>a>>b>>c>>d;
  double i;
  int cnt=0;//找到的实根个数 
  for(i=-100;i<=100;i++)
  {
    double left=i,right=i+1;
    if(f(left)*f(right)==0)//left和right肯定有一个是根 
    {
      if(f(left)==0)
      ans[k++]=left;
    }
    else if(f(left)*f(right)<0)//某一个根肯定在left和right之间 
    {
      while((fabs(right-left))>=0.00001)
      {
        double mid=(left+right)/2.0;
        if(f(left)*f(mid)<=0)
        right=mid;
        else
        left=mid;
      }
      //printf("%.2lf\n",left);
      ans[k++]=left;
    } 
    else//根不在 left和right之间 
      continue;
  }
  for(int j=0;j<k;j++)
  {
    if(i==k-1)
    printf("%.2lf\n",ans[j]);
    else
    printf("%.2lf ",ans[j]);
  }
  return 0;
}
相关文章
|
6天前
|
算法 数据可视化 Python
Python启发式算法中爬山法的讲解及解方程问题实战(超详细 附源码)
Python启发式算法中爬山法的讲解及解方程问题实战(超详细 附源码)
77 0
|
11月前
|
算法
数值分析算法 MATLAB 实践 非线性方程(组)求解
数值分析算法 MATLAB 实践 非线性方程(组)求解
117 0
|
11月前
|
机器学习/深度学习 算法 Python
学习笔记: 机器学习经典算法-多元线性回归的正规方程解
机器学习经典算法-个人笔记和学习心得分享
74 0
|
机器学习/深度学习 算法 决策智能
方程就是二叉树森林?遗传算法从数据中直接发现未知控制方程和物理机理
方程就是二叉树森林?遗传算法从数据中直接发现未知控制方程和物理机理
|
算法
秒懂算法 | 递推方程求解方法
时间复杂度和空间复杂度表示为递推方程的两种求解方法。
236 1
秒懂算法 | 递推方程求解方法
06【C语言 & 趣味算法】牛顿迭代法求方程根(可回看)
06【C语言 & 趣味算法】牛顿迭代法求方程根(可回看)
06【C语言 & 趣味算法】牛顿迭代法求方程根(可回看)
|
存储 算法
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
126 0
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
|
算法
算法竞赛刷题:[NOIP2001 提高组] 一元三次方程求解
算法竞赛刷题:[NOIP2001 提高组] 一元三次方程求解
317 0
|
Web App开发 算法 数据处理
Matlab之Kalman:用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法
Matlab之Kalman:用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法
Matlab之Kalman:用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法
|
算法
《算法设计编程实验:大学程序设计课程与竞赛训练教材》——3.2 求解不定方程和同余方程的实验范例
本节书摘来自华章计算机《算法设计编程实验:大学程序设计课程与竞赛训练教材》一书中的第3章,第3.2节,作者:吴永辉,王建德著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1547 0