题目
题目描述
给出三条线段 a,b,c 的长度,均是不大于 1000010000 的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?
- 如果三条线段不能组成一个三角形,输出
Not triangle
; - 如果是直角三角形,输出
Right triangle
; - 如果是锐角三角形,输出
Acute triangle
; - 如果是钝角三角形,输出
Obtuse triangle
; - 如果是等腰三角形,输出
Isosceles triangle
; - 如果是等边三角形,输出
Equilateral triangle
。
如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。
输入格式
输入 3 个整数 a、b 和 c。
输出格式
输出若干行判定字符串。
输入输出样例
输入 #1
3 3 3
输出 #1
Acute triangle Isosceles triangle Equilateral triangle
输入 #2
3 4 5
输出 #2
Right triangle
输入 #3
6 10 6
输出 #3
Obtuse triangle Isosceles triangle
输入 #4
1 14 5
输出 #4
Not triangle
说明/提示
当两短边的平方和大于一长边的平方,说明是锐角三角形。
当两短边的平方和等于一长边的平方,说明是直角三角形。
当两短边的平方和小于一长边的平方,说明是钝角三角形。
思路
判断是否为三角形(使用三边关系)
三角形的三边关系为 a+b>c(或|a-b|<c)
若不是,就输出"Not triangle"
如果是三角形,判断种类
1.用角的关系来判断种类(勾股定理和余弦定理)
直角三角形的三边关系为 a^2+b^2=c^2(a、b为直角边,c为斜边)
如果此条件成立,输出 "Right triangle"
锐角三角形和钝角三角形的就肯定是 a^2+b^2<c^2 和 a^2+b^2>c^2 了
之后输出 "Acute triangle" 或者 "Obtuse triangle" 即可
2.用边的关系来判断种类(等量关系)
等腰三角形任意两边相等,判断条件也就是 a==b||a==c||b==c 了
等边三角形三边相等, 就是说 a==b&&b==c
代码
代码如下(无注释):
#include<bits/stdc++.h>
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
if(a>c) swap(a,c);
if(b>c) swap(b,c);
if(a+b<=c){
cout<<"Not triangle";
}else{
if(pow(a,2)+pow(b,2)==pow(c,2)){
cout<<"Right triangle"<<endl;
}else if(pow(a,2)+pow(b,2)>pow(c,2)){
cout<<"Acute triangle"<<endl;
}else if(pow(a,2)+pow(b,2)<pow(c,2)){
cout<<"Obtuse triangle"<<endl;
}
if(a==b||a==c||b==c){
cout<<"Isosceles triangle"<<endl;
}if(a==b&&b==c){
cout<<"Equilateral triangle"<<endl;
}
}
return 0;
}
(有注释):
#include<bits/stdc++.h>
#include<iostream>
#include<cmath>
using namespace std;
//【深基3.习8】三角形分类
int main(){
int a,b,c;
cin>>a>>b>>c;
//将最长的边放在最后
if(a>c) swap(a,c);
if(b>c) swap(b,c);
//判断是否为三角形(使用三边关系)
if(a+b<=c){
cout<<"Not triangle";
}else{ //如果是三角形,判断种类
//用角的关系来判断种类(勾股定理和余弦定理)
if(pow(a,2)+pow(b,2)==pow(c,2)){
cout<<"Right triangle"<<endl;
}else if(pow(a,2)+pow(b,2)>pow(c,2)){
cout<<"Acute triangle"<<endl;
}else if(pow(a,2)+pow(b,2)<pow(c,2)){
cout<<"Obtuse triangle"<<endl;
}
//用边的关系来判断种类
if(a==b||a==c||b==c){ //如果等腰
cout<<"Isosceles triangle"<<endl;
}if(a==b&&b==c){ //如果等边(等边三角形是特殊的等腰三角形,所以不能用"else if")
cout<<"Equilateral triangle"<<endl;
}
}
return 0; //你学会了吗?
}
第二次写题解,有任何问题或建议记得留在评论区!
:3==) (这是一个流鼻涕的表情包,看出来了吗)