上海计算机协会-10月月赛-丙组-T1-直角三角形的判定

直角三角形的判定

内存限制: 256 Mb时间限制: 1000 ms

题目描述

给定三个正整数表示三角形的三条边,请判定它是否为直角三角形。

输入格式

第一行:三个整数 a,b与 c

输出格式

  • 若可以构成一个直角三角形,输出 Right Triangle
  • 否则,输出 No

数据范围

1gif.latex?%5Cle a, b, cgif.latex?%5Cle 10001≤a,b,c≤1000

样例数据

输入:

3 4 5

输出:

Right Triangle

输入:

3 3 3

输出:

No

题目出处

根据勾股定理:gif.latex?a%5E%7B2%7D+b%5E%7B2%7D%3Dc%5E%7B2%7D,也就是说:

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;
}

posted @ 2022-11-12 16:03  whznfy  阅读(17)  评论(0)    收藏  举报  来源