TB椰程 TypeBuddy 打字搭子

三角形分类

洛谷·深入浅出 · 代码 · cpp · 难度 4/5 · 共 859 字

排序后按平方和判直角/锐角/钝角,再判等腰等边

  • 洛谷
  • 练习

正文

// 原题:https://oj.yecheng.tv/p/1367
// 题意:输入三边,按固定顺序输出所有满足的判定(Not triangle/Right/Acute/Obtuse/Isosceles/Equilateral)。
// 思路:先排序,判断是否成三角形;再按平方和比较判定直角/锐角/钝角;最后判等腰、等边。
// 复杂度:O(1)。
// 易错点:顺序固定;等边也属于等腰要先输出 Equilateral;成不了三角形直接输出 Not triangle。
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    long long a[3];
    cin >> a[0] >> a[1] >> a[2];
    sort(a, a + 3);
    if (a[0] + a[1] <= a[2]) { cout << "Not triangle" << endl; return 0; }
    long long x = a[0], y = a[1], z = a[2];
    long long s2 = x * x + y * y, z2 = z * z;
    if (s2 == z2) cout << "Right triangle" << endl;
    else if (s2 > z2) cout << "Acute triangle" << endl;
    else cout << "Obtuse triangle" << endl;
    if (x == y || y == z || x == z) cout << "Isosceles triangle" << endl;
    if (x == y && y == z) cout << "Equilateral triangle" << endl;
    return 0;
}

洛谷·深入浅出的其它内容

打字首页 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK