题目描述
这个程序会读取表示三角形三条边的 3个浮点数 A,B和 C并按降序排列,使 A边是三边中最大的一边。
接下来,根据以下情况,确定它们可以组成的三角形类型:
如果 A≥B+C,则说明三条边不能构成三角形,请输出:NAO FORMA TRIANGULO
否则,说明三条边可以构成三角形,然后按如下情况输出:
先确定角的类型,如果A的平方=B的平方+C的平方,输出:TRIANGULO RETANGULO(直角三角形);
如果A的平方>B的平方+C的平方,输出:TRIANGULO OBTUSANGULO(钝角三角形);
如果A的平方<B的平方+C的平方,输出:TRIANGULO ACUTANGULO(锐角三角形);
再确定边的类型,如果三个边长度都相同,输出TRIANGULO EQUILATERO(正三角形);
如果只有两个边长度相同而第三个边长度不同,输出TRIANGULO ISOSCELES(等腰三角形).
样例
#include<iostream>
using namespace std;
int main(){
double a,b,c;
cin>>a>>b>>c;
if(b>a){
double t=a;
a=b;
b=t;
}
if(c>a){
double t=a;
a=c;
c=t;
}
if(b>c){
double t=c;
c=b;
b=t;
}
if(a>=b+c)cout<<"NAO FORMA TRIANGULO"<<endl;
else{
if(a*a==b*b+c*c)cout<<"TRIANGULO RETANGULO"<<endl;
if(a*a>b*b+c*c)cout<<"TRIANGULO OBTUSANGULO"<<endl;
if(a*a<b*b+c*c)cout<<"TRIANGULO ACUTANGULO"<<endl;
if(a==b&&a==c&&b==c)cout<<"TRIANGULO EQUILATERO"<<endl;
else if(a==b||a==c||b==c)cout<<"TRIANGULO ISOSCELES"<<endl;
}
return 0;
}
算法
(使用if-else语句嵌套)
if-else语句是指高级编程语言(包括C、C++、C#、Visual Basic、Java等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。
时间复杂度
题目要求1000ms
i7 13700:230ms
R5 7600:249ms
R7 7800X3D:228ms
Snapdragon 8 II:465ms
Snapdragon 865 II:567.9ms
Kirin 999:485ms
运行配置
cpu:i7 13700
gpu:NVIDIA RTX 4060
内存32G
硬盘2T
C++ 代码
#include<iostream>
#include<queue>
#include<chrono>
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
int main(){
double a,b,c;
cin>>a>>b>>c;
if(b>a){
double t=a;
a=b;
b=t;
}
if(c>a){
double t=a;
a=c;
c=t;
}
if(b>c){
double t=c;
c=b;
b=t;
}
if(a>=b+c)cout<<"NAO FORMA TRIANGULO"<<endl;
else{
if(a*a==b*b+c*c)
cout<<"TRIANGULO RETANGULO"<<endl;
if(a*a>b*b+c*c)
cout<<"TRIANGULO OBTUSANGULO"<<endl;
if(a*a<b*b+c*c)
cout<<"TRIANGULO ACUTANGULO"<<endl;
if(a==b&&a==c&&b==c)
cout<<"TRIANGULO EQUILATERO"<<endl;
else if(a==b||a==c||b==c)
cout<<"TRIANGULO ISOSCELES"<<endl;
}
return 0;
}
结束