6 solutions

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

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

  • 2
    @ 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;
      }
      
      
      
    • -1
      @ 2025-12-17 16:32:19

      #include 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-12-20 16:18:54

        666,直接抄上面那位的代码,盐都不盐了

    • -3
      @ 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;
      }
      
      
    • -4
      @ 2025-10-4 15:56:43

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

    • 1

    Information

    ID
    1348
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    6
    Tags
    (None)
    # Submissions
    117
    Accepted
    39
    Uploaded By