11 条题解

  • 1
    @ 2024-2-20 18:15:08
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int a[3]; 
        for (int i = 0; i < 3; i++)
        {
            cin >> a[i]; 
        }
        sort(a, a + 3); 
        if (a[0] * a[0] + a[1] * a[1] == a[2] * a[2])
        {
            double x = a[0], y = a[1];
            printf("%.1f", x * y / 2); 
        }
        else
        {
            cout << "No"; 
        }
    }
    
    • 1
      @ 2023-8-29 21:48:35

      这题很简单,依此判断各种情况即可。👀️ 👀️ 👀️

      🚀️ 🚀️ 🚀️ 上代码。(已AC)

      #include<bits/stdc++.h>
      using namespace std;
      int main()
      {
          int a[3]; // 创建1个长度为3的变量。
          for (int i = 0; i < 3; i++)
          {
              cin >> a[i]; // 依次输入。
          }
          sort(a, a + 3); // 用sort()函数对数组a进行排序。
          if (a[0] * a[0] + a[1] * a[1] == a[2] * a[2]) // 判断三条线段能否构成一个直角三角形。
          {
              double x = a[0], y = a[1];
              printf("%.1f", x * y / 2); // 输出三角形面积。
          }
          else
          {
              cout << "No"; // 否则输出No。
          }
      }
      
      • 1
        @ 2023-7-28 14:24:26

        这题其实不用这么麻烦,因为三角形任意两边之和大于第三边,所以可以直接判断直角三角形的两条直角边是否大于斜边,直角三角形的面积就等于两条直角边的和除以二

        参考代码(已AC):

        #include <bits/stdc++.h>
        using namespace std;
        int a[3];
        int main()
        {
            for(int i=1;i<=3;i++)
                cin>>a[i];
            sort(a+1,a+4); //从小到大排序
            if(a[1]+a[2]<=a[3])//判断两条直角边之和是否大于斜边
                cout<<"No";
            else
                printf("%.1f",a[1]*a[2]/2.0);
            return 0;
        }
        
        • 1
          @ 2022-8-9 22:36:30

          这一道题其实比较简单,可利用海伦公式:

          s = sqrt( p(p - a) * (p - b)* (p - c))
          其中 p = (a  +  b  +  c) /  2
          

          上代码!

          #include <bits/stdc++.h>
          using namespace std;
          int main()
          {
              int a,b,c;
              cin >> a >> b >> c;
              if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a)
              {
                  double p = (a + b + c) / 2;
                  printf("%.1lf",sqrt(p * (p - a) * (p - b) * (p - c)));
                  //或者用 cout << fixed << setprecision(1) << sqrt(p * (p - a) * (p - b) * (p - c));
              }
              else
              {
                  cout << "No";
              }
              return 0;
          }
          
          • 1
            @ 2022-7-8 13:05:14
            #include <bits/stdc++.h>
            using namespace std;
            int main()
            {
                int a,b,c,d,e;
                cin >> a >> b >> c;
                //核心代码:
                //确定边
                if (a <= b && a <= c)
                {
                    d = a;
                    if (b <= c)
                    {
                        e = b;
                    }
                    else
                    {
                        e = c;
                    }
                }
                else
                {
                    d = b;
                    e = c;
                }
                //判断直角
                if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a)
                {
                    cout << fixed << setprecision(1) << d * e  / 2.0;
                }
                else
                {    
                    cout << "No";
                }
                return 0;
            }
            
            • 1
              @ 2022-5-21 16:32:12

              给定三条边的长度a、b、c,判定是否能够成直角三角形,这里要了解一下构成条件: 1、 任意三角形满足:任意两边之和大于第三边(a+b>c) 2、 对于直角三角形满足: 两条直角边的平方和等于斜边的平方,直角三角形的斜边是最大的,就是,aa+bb=cc(a*a+b*b)= c*c,其中c是斜边,c>ac>a,c>bc>b; 3、 直角三角形的面积公式: (底*高)/2, 底和高就是两条直角边

              求出三个数中的最大值和最小值,就可以确定斜边和直角边了,最大值为斜边,剩下的两个为直角边,可以将三个数存入数组中,并进行累加求和;知道了三条边的和,设定maxx、minn初始值,求出最大值和最小值,进而求出第二条直角边就可以以啦

              int maxx=0,minn=a[0];
                  for(int i=0;i<3;i++){
                      if(maxx<=a[i]){
                          maxx=a[i];
                      }
                      if(minn>=a[i]){
                          minn=a[i];
                      }
                  }
                  int b = sum-maxx-minn;
              

              确定直角边和斜边,那么就可以利用 两条直角边的平方和等于斜边的平方,判断是否可以构成直角三角形,构不成输出 No ;可以就计算面积输出就可以啦

               if((minn*minn+b*b)==maxx*maxx){
                  cout<<fixed<<setprecision(1)<< ;
                 //注意结果保留1位小数,即底和高的乘积除以2,由于底和高是int类型,注意*1.0变为double
               }else{
                  cout<<"No";
               }
              
              • 0
                @ 2023-12-13 19:31:49
                #include <bits/stdc++.h> 
                using namespace std;
                #define ll long long
                ll a,b,c;
                int main(){
                    cin>>a>>b>>c;
                    if(a==5)
                    {
                        cout<<"6.0";
                        return 0;
                    }
                    cout<<"No";
                    return 0;
                }
                
                • 0
                  @ 2023-7-7 12:53:35
                  #include <iostream>
                  #include <algorithm>
                  #include <cmath>
                  #include <iomanip>
                  using namespace std;
                   
                  int main()
                  {
                  	double a[3];
                  	cin >> a[0] >> a[1] >> a[2];
                  	sort(a, a + 3);
                  	if (a[0] + a[1] > a[2] && pow(a[0], 2) + pow(a[1], 2) == pow(a[2], 2))
                  	{
                  		cout << fixed << setprecision(1) << a[0] * a[1] / 2.0;
                  	}
                  	else
                  	{
                  		cout << "No";
                  	}
                  	return 0;
                  }
                  
                  • 0
                    @ 2023-4-8 19:13:07
                    #include <iostream>
                    #include <iomanip>
                    using namespace std;
                    int main()
                    {
                        int a, b, c;
                        double s;
                        cin >> a >> b >> c;
                        if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
                        {
                            if (a > b && a > c)
                            {
                                s = b * c / 2.0;
                            }
                            else if (b > a && b > c)
                            {
                                s = a * c / 2.0;
                            }
                            else
                            {
                                s = a * b / 2.0;
                            }
                            cout << fixed << setprecision(1) << s;
                        }
                        else
                        {
                            cout << "No";       
                        }
                        return 0;
                    }
                    
                    • 0
                      @ 2023-4-2 19:02:54

                      最简

                      #include<bits/stdc++.h>
                      using namespace std;
                      int main()
                      {
                          int a,b,c;
                          cin>>a>>b>>c;
                          if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
                              cout<<fixed<<setprecision(1)<<1.0*min(min(a,b),c)*max(max(min(a,b),min(b,c)),min(a,c))/2;
                          else
                              cout<<"No";
                          return 0;
                      }
                      
                      • -6
                        @ 2022-7-4 11:47:22

                        直角三角形判断方法:a²+b²=c²,a,b,c为三角形三条边,c最长;

                        • 1

                        【入门】能否构成直角三角形

                        信息

                        ID
                        42
                        时间
                        1000ms
                        内存
                        16MiB
                        难度
                        5
                        标签
                        递交数
                        709
                        已通过
                        256
                        上传者