Panasonic Programming Contest 2020 C.Sqrt Inequality

有些话、适合烂在心里 提交于 2020-03-17 01:08:08

Panasonic Programming Contest 2020 C.Sqrt Inequality

Problem Statement

Does a+b<c\sqrt{a}+\sqrt{b}<\sqrt{c} hold?

Constraints

1≤a,b,c≤1e9
All values in input are integers.

Input

Input is given from Standard Input in the following format:

a b c

Output

If a+b<c\sqrt{a}+\sqrt{b}<\sqrt{c}, print Yes; otherwise, print No.

Sample Input 1

2 3 9

Sample Output 1

No

Sample Input 2

2 3 10

Sample Output 2

Yes

这题说实话挺考验细心程度的,首先直接浮点数有精度问题算得太迷了,我们考虑转化为整型算,证明如下:
a+b<c\sqrt{a}+\sqrt{b}<\sqrt{c}
a+b+2ab<ca+b+2\sqrt{ab}<c
2ab<cab2\sqrt{ab}<c-a-b
4ab<(cab)24{ab}<(c-a-b)^2
细心的你有没有发现我标红的部分呢,没错,就按上述方法判断的话还是会错一个点,就在标红的地方,不难发现左边恒大于0,右边不一定大于0,所以要特判一下
c>a+bc>a+b,AC代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int main(){
   unsigned long long a,b,c,l,r;
   cin>>a>>b>>c;
   l=4*a*b,r=(c-a-b)*(c-a-b);
   if(c<=a+b) puts("No");
   else if(l<r)puts("Yes");else puts("No");
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!