QKL is a poor and busy guy, and he was not good at math.? Last day, his teacher assigned a homework: Give you 3 segments with positive length, can you use these segments to make a triangle? If can, what is the type of the triangle? Acute triangle, right triangle or obtuse triangle? Pay attention that vertices of triangle must be vertices of two segments. QKL is afraid of any type of math problems, so he turns to you for help. Can you help him?
輸入
Several test cases, one line per case. In case consists of three positive integers: a, b, c, indicating the lengths of 3 segments. 0 < a, b, c <= 10000
輸出
In each test case, you just print one line of result. If you can't make a triangle by using these segments, print "FAIL TO MAKE!"(quote for clarify). If you can make an acute triangle, print "Acute"(quote for clarify). If you can make a right triangle, print "Right"(quote for clarify). If you can make an obtuse triangle, print "Obtuse"(quote for clarify).
樣例輸入
1 2 3
2 3 4
3 4 5
4 5 6
樣例輸出
FAIL TO MAKE!
Obtuse
Right
Acute
提示
You can use this form of code to deal with several test cases. while (scanf("%d%d%d", &a, &b, &c) != EOF) { //Your codes here. } 題目鏈接:http://acm.hust.edu.cn/problem/show/1555 分析:題目大意就是求解三邊是否構成三角形,如果是,它是鈍角三角形、銳角三角形還是直角三角形! 別看如此簡單,出題目的人挖空心思在坑人!提示告訴我們要用scanf輸入,不然估計又會超時吧! 剛開始想用數組輸,結果可想而知,直接WA,其實這題目也沒有那么復雜,就是先去判斷三邊是否構成三角形,然后利用余弦定理(判斷任意兩邊的平方和減去第三邊的大小情況)大于0為銳角三角形,小于0為鈍角三角形,等于0為直角三角形! 也可以將這三條邊進行排序,然后取最短兩條邊的平方和與第三邊的平方進行比較求解! 下面給出AC代碼: 1 #include <bits/stdc++.h>
2usingnamespace std;
3int main()
4{
5int a,b,c;
6double s;
7while(scanf("%d%d%d",&a,&b,&c)!=EOF)
8 {
9if(a+b<=c||a+c<=b||b+c<=a)
10 printf("FAIL TO MAKE!\n");
11else12 {
13if(a*a+b*b-c*c==0||a*a+c*c-b*b==0||b*b+c*c-a*a==0)
14 printf("Right\n");
15elseif(a*a+b*b-c*c<0||a*a+c*c-b*b<0||b*b+c*c-a*a<0)
16 printf("Obtuse\n");
17else printf("Acute\n");
18 }
19 }
20return0;
21 }