1043: Fixed Point

时间限制: 5 Sec  内存限制: 128 MB

提交: 26  解决: 5

[提交][状态][讨论版]

题目描述

In
mathematics, a
fixed point (sometimes shortened to
fixpoint, also known as an
invariant point) of a
function is a point that is mapped to itself by the function. That is to say,
x is a fixed point of the function
f
if and only if
f(x)
= x. For example, if
f is defined on the
real numbers by f(x)=x*x-3*x+4.,then
2 is a fixed point of f, because
f(2) = 2.

Not all functions have fixed points: for example, if
f is a function defined on the real numbers as
f(x)
= x + 1, then it has no fixed points, since
x is never equal to
x + 1 for any real number. In graphical terms, a fixed point means the point (x,
f(x))
is on the line y =
x, or in other words the
graph of
f
has a point in common with that line. The example
f(x)
= x + 1 is a case where the graph and the line are a pair of
parallel
lines.

------
http://en.wikipedia.org/wiki/Fixed_point_%28mathematics%29

Our problem is,for a defined on real number function:

f(x)=a*x*x*x+b*x*x+c*x+d,how many different fixed points does it have?

输入

There are multiple test cases.For each test cases, there are four
integers a, b, c and
d in a single line.

You can assume that
-213<=a<=213,
-213<=b<=213,
-213<=c<=213,
-213<=d<=213,and
the number of the result is countable.

输出

For each test case, output the answer
in a single line.

样例输入

3 111 793 -3456
5 -135 811 0
-1 9 10 -81

样例输出

3
3
3


#include<iostream>
#include<math.h>
using namespace std;
int main(){
	freopen("in.txt", "r", stdin);
	double a3, b3, c3, d3;
	double a2, b2, c2;
	while (cin >> a3 >> b3 >> c3 >> d3){
		c3--;
		a2 = 3 * a3; b2 = 2 * b3; c2 = c3;
		if (a3 == 0){
			if (b3 == 0)//一次方程
			{
				if (c3 == 0){//只剩常数
					cout << 0 << endl;
				}
				else cout << 1 << endl;
			}
			else{//二次方程
				double delta = c3*c3 - 4 * b3*d3;
				if (delta == 0)cout << 1 << endl;
				else if (delta>0)cout << 2 << endl;
				else cout << 0 << endl;
			}
		}
		else{//三次方程
			double delta = b2*b2 - 4 * a2*c2;
			if (delta <= 0)//单调递增
				cout << 1 << endl;
			else{
				double x1 = (-b2 - sqrt(delta)) / (2 * a2);
				double x2 = (-b2 + sqrt(delta)) / (2 * a2);
				double y1 = a3*x1*x1*x1 + b3*x1*x1 + c3*x1 + d3;
				double y2 = a3*x2*x2*x2 + b3*x2*x2 + c3*x2 + d3;
				double see = y1*y2;
				if (see == 0)cout << 2 << endl;
				else if (see > 0)cout << 1 << endl;
				else cout << 3 << endl;
			}
		}
	}
	return 0;
}

东大OJ-一元三次方程解的个数的更多相关文章

  1. Vijos P1116 一元三次方程求解【多解,暴力,二分】

    一元三次方程求解 描述 有形如:ax^3+bx^2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之 ...

  2. 【CodeVS】p1038 一元三次方程求解

    题目描述 Description 有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100 ...

  3. 一元三次方程 (codevs 1038)题解

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

  4. p1144一元三次方程求解

    题目描述: 有形如:f(x)=ax^3+bx^2+cx+d=0这样的一元三次方程,给出该方程中各项的系数a,b,c,d,它们均为实数,并约定该方程一定存在着3个不同的实数解,解的范围在-100至100 ...

  5. 1038 一元三次方程求解 2001年NOIP全国联赛提高组

    题目描述 Description 有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100 ...

  6. [NOIP提高&洛谷P1024]一元三次方程求解 题解(二分答案)

    [NOIP提高&洛谷P1024]一元三次方程求解 Description 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约 ...

  7. [NOIP2001] 提高组 洛谷P1024 一元三次方程求解

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

  8. luogu【P1024 一元三次方程求解】题解

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

  9. NOIP2001 一元三次方程求解[导数+牛顿迭代法]

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

随机推荐

  1. [转]Oracle Form 触发器执行顺序

    Trigger 不是数据库中的触发器,不过功能类似,都是当某个事件发生的时候会触发. Trigger中可以编写代码,当对应事件发生的时候就会执行该Trigger中的代码. Oracle Form中的T ...

  2. 151003-动起来-Javascript

    Hi 玩了三天了,下午一会儿还有电影,心快收不回来了...不过,竟然无聊到想学习,你敢信? 下个规矩吧,以后每天早上起来在这里写东西,至少也得是个hi,或者以后都以这个为开头好了,算是个个人标志?申请 ...

  3. JustWeEngine - 轻量级游戏框架

    JustWeEngine - 轻量级游戏框架 An easy open source Android game engine. Github地址 引擎核心类流程图 使用方法 引入Engine作为Lib ...

  4. 详细说说 Google Test Certified 的各级——Level 2,3

    转载请联系作者,谢谢!   No releases with red tests基于Level1搭建的持续集成,持续发布选用的CL(changelist)就可以取自CI系统最后跑通的CL,因为持续集成 ...

  5. NYOJ-取石子(二)

    取石子(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子. 游戏规则如下:共有N堆石子,已知每堆中石子的数量,并且 ...

  6. POJ1062昂贵的聘礼[最短路建模]

    昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45892   Accepted: 13614 Descripti ...

  7. 03 Hibernate错题分析

    1.在Hibernate中,以下关于主键生成器说法错误的是( C). A.increment可以用于类型为long.short或byte的主键 B.identity用于如SQL Server.DB2. ...

  8. 终于可以在centos下使用QQ啦!

    电脑装了centos 6.4操作系统,一直无法使用QQ,在centos中文论坛看到一篇介绍安装qq的文章,依样画葫芦,终于成功了1.下载QQ2012软件安装包,我给大家准备好了下载地址 [root@b ...

  9. nginx集群报错“upstream”directive is not allow here 错误

    nginx集群报错“upstream”directive is not allow here 错误 搭建了一个服务器, 采用的是nginx + apache(多个) + php + mysql(两个) ...

  10. iOS ARC内存管理

    iOS的内存管理机制,只要是iOS开发者,不管多长的时间经验,都能说出来一点,但是要深入的理解.还是不简单的.随着ARC(自动管理内存)的流行.iOS开发者告别了手动管理内存的复杂工作.但是自动管理内 ...