直角三角形的判定
内存限制: 256 Mb时间限制: 1000 ms
题目描述
给定三个正整数表示三角形的三条边,请判定它是否为直角三角形。
输入格式
第一行:三个整数 a,b与 c
输出格式
- 若可以构成一个直角三角形,输出
Right Triangle
- 否则,输出
No
数据范围
1 a, b, c 10001≤a,b,c≤1000
样例数据
输入:
3 4 5
输出:
Right Triangle
输入:
3 3 3
输出:
No
根据勾股定理:,也就是说:
if(a*a+b*b==c*c)
,就满足。
但要注意!!!----题目给出的数据a,b,c不一定按大小顺序输入(例如a=5,b=4,c=3),所以要先排序。这里就不麻烦地写swap了,用sort(大材小用了),实际得分100分:
#include <bits/stdc++.h>
using namespace std;
int a[4];
int main(){
for(int i=1;i<=3;++i)cin>>a[i];
sort(a+1,a+4);
/*可以改成:
if(a[1]>a[2])swap(a[1],a[2]);
if(a[2]>a[3])swap(a[2],a[3]);
if(a[1]>a[2])swap(a[1],a[2]);
其实这也是没必要----因为我只需要保证c最大,a,b顺序与我无关。
所以可以改成:
if(a[2]>a[3])swap(a[2],a[3]);
if(a[1]>a[3])swap(a[1],a[2]);
*/
if(sqrt(a[1]*a[1]+a[2]*a[2])==a[3])cout<<"Right Triangle"<<endl;
//也可以改成:if(a[1]*a[1]+a[2]*a[2]==a[3]*a[3])cout<<"Right Triangle"<<endl;
else cout<<"No"<<endl;
return 0;
}