本文主要是介绍洛谷P5717 【深基3.习8】三角形分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给出三条线段 a,b,c 的长度,均是不大于 10000的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?
- 如果三条线段不能组成一个三角形,输出
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
说明/提示
当两短边的平方和大于一长边的平方,说明是锐角三角形。
当两短边的平方和等于一长边的平方,说明是直角三角形。
当两短边的平方和小于一长边的平方,说明是钝角三角形。
要做出这题,你必须知道以下几点:
-
勾股定理
-
三角形内任意22边之和大于第33边
-
等边三角形33条边相等,等腰三角形两腰相等。
关于勾股定理:
假设a为最长边,b为次长边,c为最短边。
如果a2=b2+c2,这个三角形是一个直角三角形。
如果a2>b2+c2,这个三角形是一个钝角三角形。
如果a2<b2+c2,这个三角形是一个锐角三角形。
因为勾股定理必须找出最长边,所以可以用a数组存储三条边的长度,然后从小到大排序。
话不多说,直接上code
#include<bits/stdc++.h>
using namespace std;
int a[4],n=3;
int main() {for(int i=1; i<=3; ++i) scanf("%d",&a[i]);sort(a+1,a+n+1);if(a[1]+a[2]<=a[3]) {printf("Not triangle\n");return 0;}if(a[3]*a[3]==(a[2]*a[2]+a[1]*a[1])) printf("Right triangle\n");else if(a[3]*a[3]>(a[2]*a[2]+a[1]*a[1])) printf("Obtuse triangle\n");else if(a[3]*a[3]<(a[2]*a[2]+a[1]*a[1]))printf("Acute triangle\n");if(a[1]==a[2]||a[2]==a[3]||a[3]==a[1]) printf("Isosceles triangle\n");if(a[1]==a[2]&&a[2]==a[3]) printf("Equilateral triangle\n");return 0;
}
记得点赞哟!
这篇关于洛谷P5717 【深基3.习8】三角形分类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!