Triangle
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1038 Accepted Submission(s): 648
Problem Description
You are given the side lengths of a triangle, determine is it an acute triangle, right triangle or obtuse triangle.
Input
The first line contains an integer T indicating the number of test cases.
For each test case, there is a single line contains three integer A, B and C indicating the side lengths of the triangle. (You can assume it is a valid triangle)
Technical Specification
1. 1 <= T <= 50
2. 1 <= A,B,C <= 100
For each test case, there is a single line contains three integer A, B and C indicating the side lengths of the triangle. (You can assume it is a valid triangle)
Technical Specification
1. 1 <= T <= 50
2. 1 <= A,B,C <= 100
Output
For each test case, output the case number first, then output "Acute triangle", "Right triangle" or "Obtuse triangle".
Sample Input
3 2 2 2 4 8 5 3 4 5
Sample Output
Case 1: Acute triangle Case 2: Obtuse triangle Case 3: Right triangle
Author
hanshuai
Source
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
int cases = 1;
int main()
{
int a , b , c,t;
cin >> t;
while(t --)
{
cin >>a >> b >> c;
int sum = a+b+c;
c = max(max(a , b), c);
a = min(min(a , b), c);
b = sum - a - c ;
if(a*a + b*b > c*c) printf("Case %d: Acute triangle\n",cases ++);
else if(a*a+b*b==c*c) printf("Case %d: Right triangle\n",cases ++);
else if(a*a+b*b < c*c)printf("Case %d: Obtuse triangle\n",cases ++);
}
return 0;
}
判断一个三角形的形状,先选出两条最小的边,
如果最小的两条边的平方和大于第三边的平方,是锐角三角形。
如果最小的两条边的平方和等于第三边的平方,是直角三角形。
如果最小的两条边的平方和小于第三边的平方,是钝角三角形。
判断给定三边能不能构成三角,选出两条最小的边,
如果两边之和大于第三条边,则是三角形。
a >0 , b >0 , c >0;
a < c , b < c ;
所以a-b <c , b-a < c;
int is_trangle(int a , int b , int c)
{
int sum = a+b+c;
int t= max(max(a , b), c);
if(sum -t > t) return 1;
return 0;
}