ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LuoguP5717 【深基3.习8】三角形分类 题解

2021-12-23 21:03:28  阅读:167  来源: 互联网

标签:printf LuoguP5717 triangle 钝角 题解 深基 text 三角形 锐角三角


Content

现给定三条边的长度\(a,b,c(a,b,c\leqslant10000)\),判断是否可以构成三角形。

  • 如果无法构成三角形输出\(\text{Not triangle}\)。
  • 构成的三角形如果是直角三角形输出\(\text{Right triangle}\);
  • 如果是锐角三角形,输出\(\text{Acute triangle}\);
  • 如果是钝角三角形,输出\(\text{Obtuse triangle}\);
  • 如果是等腰三角形,输出\(\text{Isosceles triangle}\);
  • 如果是等边三角形,输出\(\text{Equilateral triangle}\)。

Solution

这道题目看上去不难,做起来却需要多加思考。

首先,需要对三条边的长度进行排序,用一个\(d\)数组存储后sort一遍即可。

排序完之后看,如果最长的一条边大于等于另外两条边的长度和,则无法构成三角形。等腰三角形、等边三角形和直角三角形这些也都好判断,这里不再赘述。

最难的是锐角三角形和钝角三角形。可能大多数小学生和部分初中生都不知道如何判定锐角和钝角三角形。那首先把结论放在这里:

在一个三角形中,如果较短的两条边的平方和大于最长边的平方,那么这个三角形是锐角三角形,否则它是钝角三角形。

可能大多数题解都不会涉及这个结论的证明,那下面我来为大家证明一下。这个结论的证明需要涉及到余弦定理

我们都知道,设三角形三个角的大小分别为\(\angle A,\angle B,\angle C\),三个角的对边分别为\(a,b,c\),则有如下结论:

\[a^2=b^2+c^2-2bc\cos{A} \]

\[\therefore b^2+c^2-a^2=2bc\cos{A} \]

这就是余弦定理。

我们又知道:

\(\cos{\alpha}\begin{cases}>0&\alpha<90^\circ\\<0&90^\circ<\alpha<180^\circ\end{cases}\)

又因为三角形每个角的度数都小于\(180^\circ\),所以当\(\angle A<90^\circ\)时,\(\cos{A}>0\),所以上面这个式子就变成了:

\[b^2+c^2-a^2>0 \]

\[\therefore b^2+c^2>a^2 \]

当\(90^\circ<\angle A<180^\circ\)时,\(\cos{A}<0\),所以如上式子就变成了:

\[b^2+c^2-a^2<0 \]

\[\therefore b^2+c^2<a^2 \]

综上所述,当三角形任意两边平方和大于第三边的平方,说明这个三角形是锐角三角形,否则它就是钝角三角形。

证毕。

证明完这个之后,我们就可以开始写代码了!

Code

#include <cstdio>
#include <algorithm>
using namespace std;

int a, b, c;

int main() {
	scanf("%d%d%d", &a, &b, &c);
	int d[4] = {0, a, b, c};
	sort(d + 1, d + 4);
	if(d[1] + d[2] <= d[3]) {
		printf("Not triangle\n");
		return 0;
	}
	if(d[1] * d[1] + d[2] * d[2] == d[3] * d[3])	printf("Right triangle\n");
	else if(d[1] * d[1] + d[2] * d[2] > d[3] * d[3])	printf("Acute triangle\n");
	else if(d[1] * d[1] + d[2] * d[2] < d[3] * d[3])	printf("Obtuse triangle\n");
	if(a == b || b == c || a == c)	printf("Isosceles triangle\n");
	if(a == b && b == c)	printf("Equilateral triangle\n");
	return 0;
}

标签:printf,LuoguP5717,triangle,钝角,题解,深基,text,三角形,锐角三角
来源: https://www.cnblogs.com/Eason-AC/p/15725210.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有