CF20B Equation 题解
Content
解方程 \(ax^2+bx+c=0\)。
数据范围:\(-10^5\leqslant a,b,c\leqslant 10^5\)。
Solution
很明显上求根公式。
先来给大家推推求根公式吧。
\]
(1)将常数项 \(c\) 移到右边。
(2)将方程两边同时除以 \(a\)。
(3)配方,由于二次项系数是 \(1\),因此很明显常数项是一次项的一半的平方。为了使方程两边相等,右边也要加上一个常数项。
(4)将等号左边写成 \(a^2\) 的形式,同时将等号右边通分。
(5)开根号,注意右边的结果正负都可以(负负得正)。
(6)将等号左边的常数项移到右边。
这样就得到了求根公式了:
\]
没错,\(x_1,x_2\) 就表示成原方程的两个解。
然而,看到方程右边的条件了没有?\(a\neq 0\)。
而题目中并没有保证 \(a\neq 0\)(事实上有 \(a=0\) 的数据)。
那么就需要分类讨论了:
一、如果 \(a=0\)。分三类。
- \(b,c=0\)。那么原方程就变成了 \(0=0\),显然有无数多个解。
- \(b=0,c\neq 0\)。那么原方程就变成了 \(c=0\),显然无解。
- \(b\neq 0\),那么原方程就变成了 \(bx+c=0\),显然该方程的解只有一个,即 \(-\dfrac cb\)。
二、如果 \(a\neq 0\),那么这个方程就是一元二次方程了。依照 \(\Delta\) 分类讨论。
首先得讲讲 \(\Delta\),其实就是上面求根公式中的 \(b^2-4ac\)。为什么要单独拿出这个式子呢?因为这和一元二次方程的解的情况有着密不可分的关系,具体如下:
- \(\Delta>0\),那么原方程中 \(x_1,x_2\) 显然都不相等因此原方程有两个不同的解。
- \(\Delta=0\),那么原方程中的 \(x_1,x_2\) 显然都是 \(-\dfrac{b}{2a}\),因此原方程严格上讲有两个相同的解,但原题目貌似将这种情况算为只有一个解了,因此这里默认为有一个解。
- \(\Delta<0\),显然,根号里面如果是负数是不在实数的讨论范围的,因此原方程严格上讲无实数解,但原题目貌似将这种情况算为无解,因此这里默认为无解。
其实只要找出 \(\Delta\),这道题目就迎刃而解了,直接那上面三种情况分类讨论即可。注意,在有两个解的时候,本题要求从小到大输出,因此建议先把两个解存储进来(设为 \(x,y\)),然后输出 \(\min\{x,y\}\) 和 \(\max\{x,y\}\)。
另外,\(b^2\) 和 \(ac\) 有可能爆出 int 范围内(\(10^5\times 10^5\geqslant2^{31}\)),因此需要开 long long。
Code
long long a, b, c;
int main() {
scanf("%lld%lld%lld", &a, &b, &c);
long long delta = b * b - 4 * a * c;
if(!a && !b && !c) return printf("-1"), 0;
if(!a && !b) return printf("0"), 0;
if(!a) return printf("1\n%.8lf", -c * 1.0 / b), 0;
if(delta > 0)
printf("2\n%.8lf\n%.8lf", min((-b - sqrt(delta)) * 1.0 / (a * 2.0), (-b + sqrt(delta)) * 1.0 / (a * 2.0)), max((-b - sqrt(delta)) * 1.0 / (a * 2.0), (-b + sqrt(delta)) * 1.0 / (a * 2.0)));
else if(delta == 0)
printf("1\n%.8lf", -b / (a * 2.0));
else
printf("0");
return 0;
}
CF20B Equation 题解的更多相关文章
- [NOIP10.6模拟赛]2.equation题解--DFS序+线段树
题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...
- Hdoj 2199.Can you solve this equation? 题解
Problem Description Now,given the equation 8x^4 + 7x^3 + 2x^2 + 3x + 6 == Y,can you find its solutio ...
- cf20B Equation(认真仔细题)
题意: 求AX^2+BX+C=0的根 思路: 考虑到A,B,C所有可能的情况 代码: double a,b,c; int main(){ cin>>a>>b>>c; ...
- Codeforces Round #470 Div. 2题解
A. Protect Sheep time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- The equation (扩展欧几里得)题解
There is an equation ax + by + c = 0. Given a,b,c,x1,x2,y1,y2 you must determine, how many integer r ...
- Codeforces Little Dima and Equation 数学题解
B. Little Dima and Equation time limit per test 1 second memory limit per test 256 megabytes input s ...
- csp-s模拟测试56Merchant, Equation,Rectangle题解
题面:https://www.cnblogs.com/Juve/articles/11619002.html merchant: 二分答案,贪心选前m大的 但是用sort复杂度不优,会T掉 我们只是找 ...
- 2019牛客多校第九场B Quadratic equation(二次剩余定理)题解
题意: 传送门 已知\(0 <= x <= y < p, p = 1e9 + 7\)且有 \((x+y) = b\mod p\) \((x\times y)=c\mod p\) 求解 ...
- 题解 Equation
传送门 考场上打了两个小时树剖,结果还是没搞出来 发现对于两个确定的点,它们一定可以列出一个方程来 其中系数的大小和正负只与这两点间距离的奇偶性有关 所以可以加一堆分情况讨论然后树剖 至于正解: 考虑 ...
随机推荐
- Java8-JVM内存区域划分白话解读
前言 java作为一款能够自动管理内存的语言,与传统的c/c++语言相比有着自己独特的优势.虽然我们无需去管理内存,但为了防范可能发生的异常,我们需要对java内部数据如何存储有一定了解,已应对突发问 ...
- jmeter ssh command方式执行hive指令
Hive命令执行 打开任意一个安装了hive的服务器,进入hive bin 路径,可以看到存在以下文件(仅展示部分): -rwxr-xr-x 1 root root 1297 Jun 28 14:29 ...
- SpringSecurity+Jwt遇到的bug
最近在使用springsecurity整合Jwt的时候,遇到了一Bug,卡住了很久,记录一下. 编写Jwt工具类JwtUtil,编写Jwt认证的核心过滤器JwtAuthenticationFilter ...
- 使用mamba加快conda安装软件速度?
conda是个安装软件的神器,但镜像不稳定,下载安装软件的速度有时很慢.对于几十Mb甚至上百Mb的软件往往下不动,下了半天可能失败. 找了一个叫mamba的加速神器,可以用来并行下载和安装,大大加快速 ...
- [Ocean Modelling for Begineers] Ch5. 2D Shallow-Water Modelling
本章利用二维浅水模型研究表面重力波的不同物理过程,如湖水中风驱动流体,正压不稳定机制(?the barotropic instability mechanism).本章将为读者介绍使用不同的对流格式模 ...
- miRAN 分析以及mRNA分析
一些参考资料 http://www.360doc.com/content/17/0528/22/19913717_658086490.shtml https://www.cnblogs.com/tri ...
- R语言与医学统计图形-【16】ggplot2几何对象之标签与文本
ggplot2绘图系统--添加标签与文本.数学表达式.条形图文本.注释 1. 文本与标签添加 geom_label的文本将以标签形式出现,即文本会带有一个背景色. geom_text则是纯文本形式展示 ...
- R语言中的read.table()
参考资料:http://www.cnblogs.com/xianghang123/archive/2012/06/06/2538274.html read.table(file, header = F ...
- CentOS安装配置Hadoop 1.2.1(伪分布模式)
CentOS安装配置Hadoop1.2.1 1.下载安装文件 下载2个安装文件 JAVA环境:jdk-6u21-linux-i586.bin Hadoop环境:hadoop-1.2.1.tar.gz ...
- 听老外吐槽框架设计,Why I Hate Frameworks?
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. Hello,小伙伴们,今天不聊技术,分享点有意思的东西.前段时间,表弟给我发过来一篇老外写的文章,以略带讽刺的对话方式调侃了自己对框架的看法,我 ...