2207 - 三角形

根据Miaowu高中所学的知识,三角形有分好几种:锐角三角形(acute triangle)、直角三角形(right triangle)、钝角三角形(obtuse triangle),现在给你三角形的三边,判定这个三角形是哪一种三角形,当然请注意了,也有可能这三条边构不成三角形哦~

题目输入

第一行输入一个数T,表示测试数据个数,对于每组测试数据,输入三个整数a,b,c (0<a,b,c<=10^4)

题目输出

对于每组测试数据,如果三角形是锐角三角形,输出"ACUTE",如果是直角三角形,输出"RIGHT",如果是钝角三角形,输出"OBTUSE",如果无法组成三角形,输出"IMPOSSIBLE",注意,引号不要输出。

输入/输出样例

题目输入

4
3 4 5
3 4 4
3 4 6
7 4 3

题目输出

RIGHT
ACUTE
OBTUSE
IMPOSSIBLE

C语言解答

#include<stdio.h>
int max(int a,int b)
{
    if(a>b) return a;
    else return b;
}
int min (int a,int b)
{
    if(a>b) return b;
    else return a;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int a,b,c,m,i,n,x;
        scanf("%d%d%d",&a,&b,&c);
        m=max(a,max(b,c));
        i=min(a,min(b,c));
        n=a+b+c-m-i;
        if(n+i>m&&m-n<i)
        {
            x=n*n+i*i-m*m;
            if(x==0)
            {
                printf("RIGHT\n");
            }
            if(x>0)
            {
                printf("ACUTE\n");
            }
            if(x<0)
            {
                printf("OBTUSE\n");
            }
        }
        else
        {
            printf("IMPOSSIBLE\n");
        }

    }
}

C++解答

#include<stdio.h>
int main()
{
    int T;
    double a,b,c;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%lf%lf%lf",&a,&b,&c);
        if(a+b>c&&a+c>b&&b+c>a)
        {
            if(a*a+b*b>c*c&&b*b+c*c>a*a&&a*a+c*c>b*b)
            {
                printf("ACUTE\n");
            }
            else if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)
            {
                printf("RIGHT\n");
            }
            else printf("OBTUSE\n");
        }
        else
        {
            printf("IMPOSSIBLE\n");
        }
    }
    return 0;
}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题