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

P5717 题解

欢迎来到 AstralNahida 的题解频道!

题目要求对三角形进行分类,对于这些分类还不清楚的请左转义务教育。

我们读取这三条边其实可以直接放到一个一维数组 \(d\) 里面,然后按升序排序。

接下来就是分类的环节了。(排序后三条边分别为 \(d_1,d_2,d_3\))。

  1. 先判断 Not triangle 的情况:
    显然,判断条件为 \(d_1+d_2\le d_3\)
  2. 接下来可以一次判断完 Right triangleAcute triangleObtuse triangle 三种情况:
    \(d_1^2+d_2^2=d_3^2\) 则为 Right triangle
    否则若 \(d_1^2+d_2^2>d_3^2\) 则为 Acute triangle
    否则为 Obtuse triangle
  3. 最后判断 Isosceles triangleEquilateral triangle 两种情况:
    \(d_1=d_2\)\(d_1= d_3\)\(d_2= d_3\) 则为 Isosceles triangle
    \(d_1=d_2=d_3\) 则为 Equilateral triangle

好啦,最后就是大家喜闻乐见的 AC Code 环节啦:

#include <iostream>
#include <algorithm>

int d[4];

int main(void) {
	std::cin >> d[1] >> d[2] >> d[3];
	std::sort(d + 1, d + 4);

	if (d[1] + d[2] <= d[3]) {
		std::cout << "Not triangle\n";
		return 0;
	}

	if (d[1] * d[1] + d[2] * d[2] == d[3] * d[3]) {
		std::cout << "Right triangle\n";
	} else if (d[1] * d[1] + d[2] * d[2] > d[3] * d[3]) {
		std::cout << "Acute triangle\n";
	} else {
		std::cout << "Obtuse triangle\n";
	}

	if (d[1] == d[2] || d[2] == d[3] || d[1] == d[3]) {
		std::cout << "Isosceles triangle\n";
	}
	if (d[1] == d[2] && d[2] == d[3]) {
		std::cout << "Equilateral triangle\n";
	}

	return 0;
}

完结撒花!祝大家 rp++ 喵。

posted @ 2025-08-20 19:18  AstralNahida  阅读(21)  评论(0)    收藏  举报