Panasonic Programming Contest 2020 C (Sqrt Inequality) 题解

题目大意

输入三个整数\(a\)\(b\)\(c\),如果 \(\sqrt a + \sqrt b < \sqrt c\) 成立,输出Yes,否则输出No

样例

输入 #1

2 3 9

输出 #1

No

\(\sqrt 2 + \sqrt 3 < \sqrt 9\) 不成立。

输入 #2

2 3 10

输出 #2

Yes

\(\sqrt 2 + \sqrt 3 < \sqrt 10\) 成立。

分析

错误思路

首先,由于系统sqrt函数的浮点数精度误差,下面这个代码明显会WA:

#include <cstdio>
#include <cmath>
using namespace std;int main(int argc, char** argv)
{int a, b, c;scanf("%d%d%d", &a, &b, &c);double d = sqrt(double(a)) + sqrt(double(b));puts(d * d < c? "Yes": "No");return 0;
}

所以,这个题一定需要特殊思路!!!

正确思路

下面是正确方法的推导过程:
\(\sqrt a + \sqrt b < \sqrt c\)
\((\sqrt a + \sqrt b)^2 < (\sqrt c)^2\)
\(a + b + 2\sqrt ab < c\)
\(2\sqrt ab < c - a - b\)
\((2\sqrt ab)^2 < (c - a - b)^2\)
\(4ab < (c - a - b)^2\)
注意:还有一种情况,就是\(c - a - b < 0\)\(c < a + b\),答案应该是No。这种情况不考虑到会WA,因为\((c - a - b)^2\)会“直接忽略负数”!

代码

#include <cstdio>
using namespace std;int main(int argc, char** argv)
{long long a, b, c;scanf("%lld%lld%lld", &a, &b, &c);long long d = c - a - b;if(d < 0) puts("No"); // 特殊情况c - a - b < 0直接输出Noelse puts((d * d > 4LL * a * b)? "Yes": "No");return 0;
}
AC截屏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794175.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Olya and Game with Arrays

看官方题解吧,我的做法跟官方题解一样 但是不知道怎么想到的,当个思维题做吧

Another Permutation Problem

我的赛时做法是官方题解的做法(\(M\)就是枚举\(i\times j\)),但是维护用的是并查集;官方题解的维护应该是这样的:从\(n\)倒序枚举到\(1\),对于当前数字,找到小于\(\frac{M}{x}\)的还没被用过的最大的数字,我们维护一个栈,观察到\(\frac{M}{x}\)单调递增,于是每次我们…

1-6Java条件语句

Java 条件语句 if语句 一个 if 语句包含一个布尔表达式和一条或多条语句。 语法 if 语句的语法如下: `if``(布尔表达式) {`` ``//如果布尔表达式为true将执行的语句``}`如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。 实例 `public` …

MainWindow中监视鼠标移动事件

实现步骤:重写 mouseMoveEvent 方法,在其中处理鼠标移动事件。 确保 MainWindow 捕捉到鼠标移动事件,这通常需要启用鼠标追踪(mouse tracking),因为默认情况下,鼠标移动事件只在按住鼠标按钮时触发。示例代码: #include <QApplication> #include <QMainWindow…

CodeForces Round #621 ABC (1307A+1307B+1307C) 题解

A. Cow and Haybales 题面 The USA Construction Operation (USACO) recently ordered Farmer John to arrange a row of n haybale piles on the farm. The \(i\)-th pile contains \(a_i\) haybales. However, Farmer John has just left for vacation, leaving Bessie all o…

Python函数之*[参数名]和**[参数名]的用处

一、*[参数名] 调用 合法调用 普通调用 *参数名一般写成*args, 如: def func(*args):print(args)可以试着调用func: >>> func(1) (1,) >>> func() () >>> func(1, 2, 3) (1, 2, 3) >>> func(dict(), set(), str(), int()) ({}, set(), ,…

discuz3.4文件包含漏洞

首先查看修复:可以看到新增代码preg_match("/^[\w-]+\.php$/i", $parse[path])) 来验证path是否为php文件,这个应该是修复路径遍历导致的文件读取漏洞。还有require ./.$_ENV[curapp]..php;这里应该是另外一个漏洞,因为$parse[path]和$_ENV[curapp]没有关联。 然后…

微信小程序报错:Component is not found in path components/comp/comp.js

完整错误 jsEnginScriptError: Component is not found in path "components/comp/comp.js" (using by pages/index/index); onAppRoute Error: Component is not found in path "components/comp/comp.js" (using by pages/index/index)in e(...)...错误代…