原题链接:STIPC-002_E.涛涛的打工日记
E.涛涛的打工日记
题目背景
出题人有话说:没难度的题目,直接对着敲就行。
题目描述
由于涛涛的好兄弟叶子哥正在训练一个三角形分类模型,可是他手头只有一堆还未标注的数据,想让涛涛帮忙标注一下,可是笨笨的涛涛完成不了这样艰巨的任务,还想让你帮忙编写程序完成这项工作。(完成不了的话,涛涛就不能继续打工啦,呜呜呜~)
标注规则如下:
给你三个整数,表示可能组成一个三角形的三条边长。
如果能组成一个等边三角形,输出 “ e q u i l a t e r a l equilateral equilateral” ;
如果能组成一个直角三角形,输出 “ r i g h t right right” ;
如果不能组成一个三角形,输出 “ e r r o r error error” ;
否则,输出 “ n o r m a l normal normal” 。输入格式
第一行一个正整数 T ( 1 ≤ T ≤ 20 ) T(1≤T≤20) T(1≤T≤20) ,表示需要标注的数据量。
接下来 T T T 行,每一行给出三个整数 a , b , c a,b,c a,b,c ( 1 ≤ a , b , c ≤ 1000 ) (1≤a,b,c≤1000) (1≤a,b,c≤1000) ,表示可能组成三角形的三条边长。输出格式
对于每一组数据,在一行内输出标注过后的结果。
输入输出样例
样例一:
输入:
4
3 3 3
3 4 5
2 2 3
1 2 3
输出:
equilateral
right
normal
error说明/提示
无
题目解析:
本题使用简单的循环判断语句即可完成,需要清楚各类三角形的边长关系:
①构成三角形的条件:任意两边之和大于第三边;
②构成等边三角形的条件:三条边的边长都相等;
③构成直角三角形的条件:满足勾股定理。
有了这些知识就可以编码
A
C
AC
AC 了!
AC代码(C++):
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int a,b,c;
for(int i=0;i<n;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(a+b<=c||a+c<=b||b+c<=a)
printf("error\n");
else if(a==b&&b==c)
printf("equilateral\n");
else if(a+b>c&&a+c>b&&b+c>a)
{
if(a*a+b*b==c*c||b*b+c*c==a*a||c*c+a*a==b*b)
printf("right\n");
else
printf("normal\n");
}
}
return 0;
}