zoukankan      html  css  js  c++  java
  • 【题解】luoguP5717三角形分类

    题目大意

    给定(a,b,c(0< a,b,cleq10000)),要求:

    • 如果三条线段不能组成一个三角形,输出( exttt{Not triangle})
    • 如果是直角三角形,输出( exttt{Right triangle})
    • 如果是锐角三角形,输出( exttt{Acute triangle})
    • 如果是钝角三角形,输出( exttt{Obtuse triangle})
    • 如果是等腰三角形,输出( exttt{Isosceles triangle})
    • 如果是等边三角形,输出( exttt{Equilateral triangle})
    • 如果这个三角形符合以上多个条件,请分别输出,并用换行符隔开。

    思路

    首先,我们知道三角形不等式,也就是:

    [a+b> c,a+c>b,c+b>a ]

    那么我们有第一个代码:

    if( !( (a + b > c) && (a + c > b) && (b + c > a) ))cout << "Not triangle" << endl;
    

    如果你知道勾股定理,也就是,对于一个直角三角形,一定有两直角边平方的和等于第三条边的平方,也就是:

    [a^2+b^2=c^2 ]

    GJnFTf.png

    那么我们有:

    if(a*a+b*b==c*c) cout << "Right triangle" << endl;
    

    那么我们要思考,锐角三角形和钝角三角形怎么办呢?不妨我们来画个图:

    GJnXBq.png

    我们令(a)不变,移动(b,c),那么你会发现:钝角三角形相当于直角三角形(b)的增长,那么一定有:(a^2+b^2>c^2);锐角三角形相当于(b)的缩小,那么就有:(a^2+b^2<c^2)
    那么我们有:

    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||b==c) cout << "Isosceles triangle" << endl;
    if(a==b&&b==c) cout << "Equilateral triangle" << endl;
    

    那么,完整代码:

    #include <bits/stdc++.h>//万能头
    using namespace std;
    void swap(int a,int b){int t;t = a;a = b;b = t;}
    int main(){
    	int a,b,c;
        cin >> a >> b >> c;
        if(a>b)swap(a,b);
        if(a>b)swap(a,c);
        if(b>c)swap(b,c);
    	/*
        这个排序很重要!
        我们在使用勾股定理的时候,(a,b)和c的顺序是不能颠倒的
        */
        if( !( (a + b > c) && (a + c > b) && (b + c > a) ))cout << "Not triangle" << endl;
        else{//是三角形才有下面这些东西:  
            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||b==c) cout << "Isosceles triangle" << endl;
            if(a==b&&b==c) cout << "Equilateral triangle" << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    Mondriaan's Dream POJ
    H
    Superdoku Kattis
    Corn Fields POJ
    旅行的意义 Gym
    G
    J
    Welcome Party ZOJ
    redis入门到精通系列(三):key的通用操作和redis内部db的通用操作
    redis入门到精通系列(二):redis操作的两个实践案例
  • 原文地址:https://www.cnblogs.com/sdltf/p/12619870.html
Copyright © 2011-2022 走看看