精华内容
下载资源
问答
  • 试题 算法训练 一元三次方程求解 题目描述: 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述  有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程...

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

    题目描述:

    资源限制
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      有形如: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
      
    解题思路:

    数据范围为[-100,100]可以知道,并不大,可以暴力解决,但是使用二分法代码效率会高很多。也就是先确定三个根的范围(每个跟介于那两个数之间),利用两个数的函数值小于0可以确定,注意这两个数是挨着的,这样大大减少了运行时间。

    AC代码

    #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;
    }
    
    展开全文
  • 链接:一元三次方程求解 题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的...

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

    原题链接一元三次方程求解

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

    数据规模和约定
    |a|,|b|,|c|,|d|< =20

    输入
    四个实数:a,b,c,d
    输出
    由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位
    样例输入
    1 -5 -4 20
    样例输出
    -2.00 2.00 5.00

    代码

    #include <iostream>
    #include <algorithm>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    int main()
    {
    	double a, b, c, d;
    	cin >> a >> b >> c >> d;
    	int xcount = 0;
    	for (double i = -100; i <= 100; i += 0.01)
    	{
    		if (xcount == 3)
    		{
    			break;
    		}
    		else
    		{
    			if (abs(a * pow(i, 3) + b * i * i + c * i + d) < 0.000001)
    			{
    				xcount++;
    				cout << fixed << setprecision(2) << i << " ";
    			}
    		}
    
    	}
    	return 0;
    }
    
    展开全文
  • 一元三次方程求解

    千次阅读 2017-11-30 18:06:32
    有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出...

    题目描述

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

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    double a,b,c,d;
    double k;
    int main()
    {
    	cin>>a>>b>>c>>d;
    	for(k=-100.00;k<=100.00;k+=0.01)
    	{
    		if(a*k*k*k+b*k*k+c*k+d<0.00000001&&a*k*k*k+b*k*k+c*k+d>-0.00000001)//纯暴力,非二分
    		{
    			printf("%.2lf",k);
    			cout<<" ";
    		}
    	}
    	return 0;
    }


    展开全文
  • #include <iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; float a,b,c,d; float f(float x){ ... if(.
    #include <iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    using namespace std;
    float a,b,c,d;
    
    float f(float x){
    	return ((a*x*x*x) + (b*x*x) + (c*x) + d);
    }
    void gen(float l,float h){
    	if(fabs(h-l) <=0.01){
    		printf("%.2f \n",l*1.0);
    		return;
    	}
    	float mid = (l+h) / 2;
    	int p = f(l) * f(mid);
    	if(p==0){
    		printf("%.2f \n",mid*1.0);
    	}else if(p<0){
    		gen(l,mid);
    	}else{
    		gen(mid,h); 
    	}
    }
    
    int t=0;	//到3个直接break;不用执行剩下的 
    float p=0;
    int main()
    {
    	cin >> a >> b >> c >> d;
    	for(int i=-100;i<100;i++){
    		p = f(i) * f(i+1);
    		if(p==0){
    			if(f(i)==0){
    				printf("%.2f \n",i*1.0);	//如果是i的话上次应该就cout了 
    				t++;
    				if(t==3) break;
    			}
    		}else if(p<0){	//发现根了 
    			gen(i*1.0,(i+1)*1.0);
    			t++;
    			if(t==3) break;
    		} 
    	}
    	//1.0 -5.0 -4.0 20.0
        return 0;
    }
    //cout << "输入:"
    

    结果:

    展开全文
  • 发现三次函数的题目露脸露得有些频繁啊事实上,三次函数作为一种较为简单的有理式,它的分析难度要比指数对数容易得多,加之近年来考纲中对“双基”的强调越来越突出,三次函数再次出现在高考中的概率还是不小的。...
  • 有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出...
  • 练习题004:一元次方程求解

    千次阅读 2017-09-24 09:57:41
    C语言练习题目录索引 题目:二元一次方程的形式一般是 ax2+bx+c=0" role="presentation" style="position: relative;">ax2+bx+c=0ax2+bx+c=0 ax^2+bx+c=0(a不能为0),输入a、b、c,求这个二元一次方程的解。 ...
  • 再探实际问题与一元次方程()练习题附答案【人教版新课标】精选.doc
  • 问题 A: 例题4-1 一元次方程求根 时间限制:1 Sec内存限制:12 MB 题目描述 求一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为0,但不保证b2-4ac>0。 程序中所涉及的变量均为double类型。...
  • 问题 E: 例题3-5 求一元次方程的根 时间限制:1 Sec内存限制:128 MB 题目描述 求一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为0,且保证b2-4ac>0。 程序中所涉及的变量均为double类型...
  • 想了解高考资讯的,请关注“深圳优秀家长论坛”。想了解高考资料的,请关注“深圳高考...应用是初中生必须面对的难点,读懂题意+列出正确的方程或函数求解是解决问题的关键。今天这份资料适合全年级的中学生练习...
  • 一元三次方程的求解问题

    千次阅读 2006-07-13 16:04:00
    [问题描述] 有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值≥1。 要求由小到大...
  • 例题1 求一元次方程的根 题目描述 求一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为0,且保证b2-4ac>0。 程序中所涉及的变量均为double类型。 输入 以空格分隔的一元次方程个...
  • 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值&gt;=1。要求由小到大依次在...
  • 这样的一个一元三次方程。 给出该方程中各项的系数 (a , b , c , d  均为实数 ) ,并约定该方程存在三个不同实根 ( 根的范围在 -100 至 100 之间 ) ,且根与根之差的绝对值 >=1 。要求由小到大依次在同一行...
  • 当a等于0时,此方程就不是一个一元次方程而变成了一元次方程可以直接求解但题目中要求输出"Not quadratic equation"这里用if判断既可。 代码实现 #include<stdio.h> int main() { float a,b,c; float ...
  • Python-定义函数.练习题.求一元次方程

    万次阅读 多人点赞 2016-04-15 20:02:45
    我写此文的目的是帮助和我一样在廖雪峰老师官网上学习Python3的同学更好的理解和学习Python的知识,所以本博文及后续文章会跟着我的学习进度来走,主要内容是廖雪峰老师官网Python资料中每节知识点后的复习的答案...
  • C++练习题:求一元次方程的根

    万次阅读 多人点赞 2016-04-11 20:24:49
    利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元次方程ax2+ bx + c =0的根,其中a不等于0。 输入 输入一行,包含个浮点数a, b, c(它们之间以一个空格分开),分别...
  • 问题 A: 例题4-1 一元次方程求根 时间限制: 1 Sec 内存限制: 12 MB 题目描述 求一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为0,但不保证b2-4ac>0。 程序中所涉及的变量均为double类型。 ...
  • 综合上述笔记,自己写的练习题。考虑了特殊字符转换 float 的情况:import cmathdef mx(a,b,c):if a==0:if b==0 :print('不是方程')returnelse: #b != 0print('一次方程 {} * x + {} = 0 的解为:\n x = {:.3f}'....
  • 问题 A: 例题4-1 一元次方程求根 时间限制: 1 Sec 内存限制: 12 MB 提交: 3353 解决: 2383 [提交][状态][讨论版][命题人:外部导入] 题目描述 求一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为...
  • 问题 E: 例题3-5 求一元次方程的根 时间限制: 1 Sec 内存限制: 128 MB 题目描述 求一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为0,且保证b2-4ac>0。 程序中所涉及的变量均为double类型。...
  • 一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为0,且保证b2-4ac>0。 程序中所涉及的变量均为double类型。 输入 以空格分隔的一元次方程个系数,双精度double类型 输出 分行输出...
  • 一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为0,但不保证b2-4ac>0。 程序中所涉及的变量均为double类型。 输入 以空格分隔的一元次方程个系数,双精度double类型 输出 分行输出两...
  • 问题 E: 例题3-5 求一元次方程的根题目描述输入结果输出时,宽度占7位,其中小数部分2位。 题目描述 求一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为0,且保证b2-4ac>0。 程序中所涉及的...
  • 通过用户一次输入二次项系数、一次项系数、常数项的值,求解二元一次方程的实数根。 分析: 1.只考虑整数情况,其他的我也不懂 2.依次设置用户输入。 3.判断二元一次方程有无实数根 4.利用二元一次方程的求根公式求...
  • 1040 例题4-1 一元次方程求根

    千次阅读 2018-03-16 21:03:15
    题目描述求一元次方程ax2+bx+c=0的根,个系数a, b, c由键盘输入,且a不能为0,但不保证b2-4ac&gt;0。程序中所涉及的变量均为double类型。输入以空格分隔的一元次方程个系数,双精度double类型输出分行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,477
精华内容 590
关键字:

一元三次方程例题