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. js 读取 cookie

    (新摘未验证)// 将document.cookie的值以名/值对组成的一个对象返回 // 假设储存cookie的值的时候是采用encodeURIComponent()函数编码的 function g ...

  2. 001.libev安装及eclipse下添加libev库链接

    libev库安装: 1.下载页面:http://dist.schmorp.de/libev/ 当前版本下载: [root@mid_server ~]# cd /usr/local/src  [root ...

  3. 入门 ARM 汇编(二)—— 寻址方式

    忧愁他整天拉着我的心,像一个琴师操练他的琴:悲哀像是海礁间的飞涛:看他那汹涌,听他那呼号!—— 徐志摩·四行诗一首 ilocker:关注 Android 安全(新手) QQ: 2597294287 立 ...

  4. HashMap和HashSet

    Java使用Set接口来描述集合,而Set中每一个数据元素都是唯一的. HashSet散列集合 Hash算法:把任意长度输入,通过散列算法,变换成固定长度的输出即散列值.对不同类型信息,散列值公式也是 ...

  5. [转]how to split the ng-repeat data with three columns using bootstrap

    本文转自:http://stackoverflow.com/questions/21644493/how-to-split-the-ng-repeat-data-with-three-columns- ...

  6. 【原】常见CSS3属性对ios&android&winphone的支持

    2个月前,我在博文<webapp开发中兼容Android4.0以下版本的css hack>中写过“那对于做移动网页开发的同事来说,一般只要做好webkit内核浏览器的展现效果就行了” ,在 ...

  7. qau-国庆七天乐——A

    A - Who's in the Middle //先吐槽一波vj,不知道怎么回事,bits/stdc++.h不能用了...坑爹 7225007 upstar A Compile Error     ...

  8. java 之前的安全的类回顾,以及以后需要线程安全时使用哪些类

    之前所学习到的线程安全的类: StringBuffer:线程安全的可变字符序列.一个类似于 String 的字符串缓冲区,但不能修改. Vector:Vector 类可以实现可增长的对象数组. Has ...

  9. toodifficult 题解

    名字听起来十分厉害啊...一道lzz的提交答案题. 提答题,我们看看题目,给出一个解密程序,叫你加密. 每个点有一个加密的sample和一些要加密的文本. 从题目中我们可以得到一些信息: 加密后一般为 ...

  10. Entity Framework连接Mysql数据库并生成Model和DAL层

    Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架.相比于LINQ TO SQL,EF框架具有很明显的优势: EF框架 ...