5 solutions

  • 3
    @ 2025-5-1 21:06:44

    加油兄弟,要自己动脑,不要再依赖题解啦

    • 1
      @ 2025-10-28 16:46:34

      题解仅供参考使用,请不要抄袭,害人害己!

      这道题是洛谷原题,可以得到更强的数据,题目难度:入门

      本题考察分支结构,需要注意判断的顺序。

      由于题目给出的边长可能无序,所以要先对三个数从小到大排序

      图:用冒泡排序对三个数排序

      图:用模拟版的冒泡排序对三个数排序

      虽然题目给出的判断条件很乱,虽然大家可能没有思路,但我们可以分成三个部分完成:

      • 是不是三角形
      • 通过角判断三角形
      • 通过边判断三角形

      首先判断能不能成三角形,就是判断两边之和大于第三边,两边之差小于第三边,不成立就输出不行,结束程序。

      图:用分支结构判断是不是三角形

      然后通过角判断三角形的形状,题目给出过如下提示:

      图:题目中的提示

      那我们就可以根据提示判断了,实际上就是把勾股定理的相关知识提前说了。

      图:用分支结构通过角判断三角形

      随后就要通过边判断三角形的形状,两边相等就是等腰三角形,三条边都相等就是等边三角形……吗?

      不全对!等边三角形是特殊的等腰三角形,所以三条边都相等既是等边三角形,又是等腰三角形,注意按顺序输出!

      图:用分支结构通过边判断三角形

      这样我们就完成了这道题。

      总结

      • 本题难度不大,只有三个数,但读题时一定要看好数据是否有序,不然会失分
      • 提示是个好东西。
      • 通过数据范围决定开的类型,如果贸然开long long会有意想不到的结果(CE或MLE然后爆零)

      点个赞再走吧QwQ

      • 1

        简单易懂

        #include<iostream>
        using namespace std;
        
        int main() {
            int a, b, c;
            cin >> a >> b >> c;
            if(a > b) swap(a, b);
            if(a > c) swap(a, c);
            if(b > c) swap(b, c);
            if(a + b <= c) {
                cout << "Not triangle" << endl; 
                return 0;//撤离失败
            }
            if(a * a + b * b == c * c) 
                cout << "Right triangle" << endl;
            if(a * a + b * b > c * c)
                cout << "Acute triangle" << endl;
            if(a * a + b * b < c * c)
                cout << "Obtuse triangle" << endl;
            if((a == b || a == c)||(c == b || a == c)||(a == b || b == c))
                cout << "Isosceles triangle" << endl;
            if(a == b && a == c && b == c)
                cout << "Equilateral triangle" << endl;
            return 0;
        }
        
        
        
        • @ 2025-10-28 16:23:18

          ?
          不是我只听说过只写解法不写代码的,还没听说过只写代码不写解法的!
          你这...

      • 0
        @ 2025-8-12 14:39:07

        非常简单...

        #include<iostream>
        using namespace std;
        
        int main() {
            int a, b, c;
            cin >> a >> b >> c;
            if(a > b) swap(a, b);
            if(a > c) swap(a, c);
            if(b > c) swap(b, c);
            if(a + b <= c) {
                cout << "Not triangle" << endl; 
                return 0;//撤离失败
            }
            if(a * a + b * b == c * c) 
                cout << "Right triangle" << endl;
            if(a * a + b * b > c * c)
                cout << "Acute triangle" << endl;
            if(a * a + b * b < c * c)
                cout << "Obtuse triangle" << endl;
            if((a == b || a == c)||(c == b || a == c)||(a == b || b == c))
                cout << "Isosceles triangle" << endl;
            if(a == b && a == c && b == c)
                cout << "Equilateral triangle" << endl;
            return 0;
        }
        
        
        • -1
          @ 2025-10-4 15:56:43

          先这样,在那样,然后再这样,最后在那样,就可以完美的WA了

        • 1

        Information

        ID
        1348
        Time
        1000ms
        Memory
        256MiB
        Difficulty
        7
        Tags
        (None)
        # Submissions
        85
        Accepted
        19
        Uploaded By