首页 > 其他分享 >P1024 [NOIP2001 提高组] 一元三次方程求解

P1024 [NOIP2001 提高组] 一元三次方程求解

时间:2024-03-31 17:29:05浏览次数:14  
标签:一元 方程 NOIP2001 实根 double P1024 xx x2 x1

题目描述

有形如: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。

输出格式

一行,3 个实根,从小到大输出,并精确到小数点后 2 位。

输入输出样例

输入 #1

1 -5 -4 20

输出 #1

-2.00 2.00 5.00

说明/提示

【题目来源】

NOIP 2001 提高组第一题

用二分算法

#include<bits/stdc++.h>
using namespace std;
double a,b,c,d;
double f(double x)
{
	return a*x*x*x+b*x*x+c*x+d;
}
int main()
{
	double x1,x2,xx;
	int x;
	cin>>a>>b>>c>>d;
	for (x=-100;x<=100;x++)
	{
		x1=x; x2=x+1;
		if (f(x1)==0) printf("%.2lf ",x1);
		else
		if (f(x1)*f(x2)<0)
		{
			while (x2-x1>=0.001)
			{
				xx=(x1+x2)/2;
				if (f(x1)*f(xx)<=0) x2=xx;
				else x1=xx;
			}
			printf("%.2lf ",x1);
		}
	}
	cout<<endl;
	return 0;
}

标签:一元,方程,NOIP2001,实根,double,P1024,xx,x2,x1
From: https://blog.csdn.net/asdlkjhgfd/article/details/137204545

相关文章

  • 高等数学基础篇之判断一元函数是否连续、可导、可微,极限、原函数是否存在
    一元函数:一、极限存在的条件二、连续的条件三、可导的条件四、可微的条件五、原函数存在的条件目录一、极限存在的条件1.自变量趋于无穷大时函数的极限2.自变量趋于有限值时函数的极限二、连续的条件1.自变量改变量趋于0时,函数值改变量也趋于02.该点的极限等于该......
  • NET Core使用Grpc通信(一):一元请求
    gRPC是一个现代的开源高性能远程过程调用(RPC)框架,它可以高效地连接数据中心内和跨数据中心的服务,支持负载平衡、跟踪、运行状况检查和身份验证。gRPC通过使用ProtocolBuffers作为数据传输格式,实现了在不同平台上的通信,并支持双向流和流式传输。RPC是远程过程调用的缩写,实现......
  • 牛客 [NOIP2001]数的划分
    https://ac.nowcoder.com/acm/problem/16695#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PII;constLLMAXN=1e18,MINN=-MAXN,INF=0x3f3f3f3f;constLLN=200200,M=2020;LLn,k;LLans=0;voiddfs(intidx......
  • C语言经典例题(8) --- 进制A+B、网购、及格分数、最高分数、计算一元二次方程
    文章目录1.进制A+B2.网购3.及格分数4.最高分数5.计算一元二次方程1.进制A+B题目描述:输入一个十六进制数a,和一个八进制数b,输出a+b的十进制结果(范围-231~231-1)。输入描述:一行,一个十六进制数a,和一个八进制数b,中间间隔一个空格。输出描述:一行,a+b的十进制结果......
  • 高等数学考研基础篇——第三章 一元微分学的应用
    这一章节特别重要,需要多花一些时间和精力去理解和学习,因此本章我写的详细一些,仅供参考。有关极值点:函数的导数在某一点可能存在也可能不存在,当函数在该点的导数存在并且为0或者在该点不存在导数时,该点可能是极值点,但反推则不对。当函数的某点在它的邻域内既可导且等于零的时......
  • 使用CSDN编写一元二次方程
    一元二次方程标准形式:ax2+bx......
  • 一元二次方程ax2+bx+c=0,a、b、c的值由用户在三行中输入,根据用户输入的数值求解方程的
    输入格式输入三行数据每行输入一个实数输出格式方程的解示例1输入:852输出:该方程无实数解示例2输入:009输出:Dataerror!a=float(input())b=float(input())c=float(input())delta=b**2-4*a*c#德塔ifdelta<0:print("该方程无实数解")#ab==0elif......
  • 一元二次方程(顺序机构版)
    一元二次方程(顺序机构版)利用博客先写出思路(思路如下)创建’net.wangchao.p02.t01’在包里创建’Equation’类在主方法里编写代码(内有注释)运行程序,查看结果结果正确,说明我们的思路没有问题,但是这个方法有点繁杂。根据大语言模型来求根改进程序,输入系数,声......
  • 一元三次方程(分治法)
    目录题目描述分治法思想介绍分治思路我的代码总结与展望一元三次方程求解【题目描述】形如:这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在−100至100之间),且根与根之差的绝对值≥1。要求由小到大依次在同一......
  • 洛谷题单指南-二叉树-P1030 [NOIP2001 普及组] 求先序排列
    原题链接:https://www.luogu.com.cn/problem/P1030题意解读:已知中序、后序,求先序。解题思路:与洛谷题单指南-二叉树-P1827[USACO3.4]美国血统AmericanHeritage非常类似,不在介绍过程,直接给出代码。100分代码:#include<bits/stdc++.h>usingnamespacestd;stringin,post......