不会了,救救孩子

9. 判断直角三角形

题目ID:3538必做题20分

最新提交:

Wrong Answer

60 分

历史最高:

Wrong Answer

60 分

时间限制: 200ms

空间限制: 32768kB

题目描述

输入三角形的三条边,利用勾股定理判断是否是直角三角形。

输入格式

输入三角形3条边�,�,�a,b,c(均为整数)

输出格式

如果3条边组成的是直角三角形,输出“yes”,否则输出“no”(不包含引号)

样例

Input 1

3 4 5

Output 1

yes

样例解释

勾股定理指直角三角形的两条直角边的平方和等于斜边的平方:a^2 + b^2 = c^2
样例 3 4 5 ,3 4为直角边,5为斜边,3^2+4^2=5^2,所以输入的三条边可以组成一个直角三角形,输出yes。

数据范围

数据保证 1<=�,�,�<=1001<=a,b,c<=100

我的代码:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
  int a,b,c,x;
  cin>>a>>b>>c;
  x=sqrt(a*a+b*b);
  if(c==x){
    cout<<"yes";
  }
  else{
    cout<<"no";
  }
  return 0;
}

你把c也平方了判断是不是等于a平方+b平方不就好了

你把a平方+b平方开根号肯定有精度问题啊

好的,试一下

if(a*a+b*b==c*c)
sqrt(a*a+b*b)会有精度问题。

好的,谢谢

还是六十分

不一定是a*a+b*b==c*c,需要考虑有交换的情况
比方说 5\,3\,45^2+3^2=34≠4^2
但是它能构成直角三角形。
核心代码:
if(a*a+b*b==c*c||c*c+a*a==b*b||c*c+b*b==a*a)

刚刚用else if ,AC了,谢谢

@Dalton 关帖

1 个赞