d507 - 三角形的判斷
題目描述
題目給定三角形的三個邊長,要求判斷該三角形是銳角、直角還是鈍角三角形。
解題思路
首先,需要確保 c 是最長的邊,以便簡化判斷。程式碼使用 XOR 運算來排序邊長,使得 c 總是最大的邊。然後,根據勾股定理判斷三角形的類型:如果 aa + bb == cc,則是直角三角形;如果 aa + bb < cc,則是鈍角三角形;否則,則是銳角三角形。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <stdio.h>
int main() {
int a,b,c;
while (scanf("%d%d%d",&a,&b,&c)>0) {
if(a>b&&a>c){
a=a^c;
c=a^c;
a=a^c;
}
else if(b>c){
b=b^c;
c=b^c;
b=b^c;
}
if (a*a+b*b==c*c)
printf("right triangle\n");
else if (a*a+b*b<c*c)
printf("obtuse triangle\n");
else
printf("acute triangle\n");
}
}