2 条题解

  • 1
    @ 2024-3-17 16:00:32
    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        int 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;
        }
        if(a[0]*a[0]+a[1]*a[1]==a[2]*a[2]) {
            cout << "Right triangle" << endl;
        } else if(a[0]*a[0]+a[1]*a[1]>a[2]*a[2]) {
            cout << "Acute triangle" << endl;   //A cute triangle =w=
        } else {
            cout << "Obtuse triangle" << endl;
        }
        if(a[0]==a[1]) {
            if(a[1]==a[2]) {
                cout << "Isosceles triangle" << endl;
                cout << "Equilateral triangle" << endl;
            } else {
                cout << "Isosceles triangle" << endl;
            }
        } else {
            if(a[1]==a[2]) {
                cout << "Isosceles triangle" << endl;
            }
        }
        return 0;
    }
    
    • 1
      @ 2023-4-29 12:32:06

      对输入的数字从小到大排序以避免啰嗦的判断写法,注意 a+b==ca+b==c 时也是无法组成三角形的

      #include <bits/stdc++.h>
      using namespace std;
      int main() {
          int 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;
          }
          if(a[0]*a[0]+a[1]*a[1]==a[2]*a[2]) {
              cout << "Right triangle" << endl;
          } else if(a[0]*a[0]+a[1]*a[1]>a[2]*a[2]) {
              cout << "Acute triangle" << endl;   //A cute triangle =w=
          } else {
              cout << "Obtuse triangle" << endl;
          }
          if(a[0]==a[1]) {
              if(a[1]==a[2]) {
                  cout << "Isosceles triangle" << endl;
                  cout << "Equilateral triangle" << endl;
              } else {
                  cout << "Isosceles triangle" << endl;
              }
          } else {
              if(a[1]==a[2]) {
                  cout << "Isosceles triangle" << endl;
              }
          }
          return 0;
      }
      

      检查了一下我之前写的代码,发现它现在不能通过新的测试点 #6,因为它其实是有缺陷的:当 a[0]a[1]a[0]\neq a[1]a[1]==a[2]a[1] == a[2] 时它只会输出一行 Acute triangle 而不会输出 Isosceles triangle,例如 2 5 5, 5 2 5, 5 5 2 这样的输入很明显是等腰三角形。

      #include <bits/stdc++.h>
      using namespace std;
      int a[3];
      int main()
      {
      	scanf("%d%d%d", &a[0], &a[1], &a[2]);
      	sort(a, a + 3);
      	if((a[0] + a[1]) < a[2])
      	{
      		printf("Not triangle\n");
      		return 0;
      	}
      	if((a[0] * a[0]) + (a[1] * a[1]) == (a[2] * a[2]))
      	  printf("Right triangle\n");
      	if((a[0] * a[0]) + (a[1] * a[1]) > (a[2] * a[2]))
      	  printf("Acute triangle\n");
      	if((a[0] * a[0]) + (a[1] * a[1]) < (a[2] * a[2]))
      	  printf("Obtuse triangle\n");
      	if(a[0] == a[1])
      	  if(a[1] == a[2])
      	  {
      	  	printf("Isosceles triangle\n");
      	    printf("Equilateral triangle\n");
      	  }
      	  else
      	  	printf("Isosceles triangle\n");
      	return 0;
      }
      
      • 1

      信息

      ID
      4639
      时间
      1000ms
      内存
      128MiB
      难度
      2
      标签
      (无)
      递交数
      17
      已通过
      13
      上传者