首页 > 其他分享 >洛谷刷题_三角形分类

洛谷刷题_三角形分类

时间:2022-11-09 23:25:31浏览次数:36  
标签:输出 triangle int 样例 && 洛谷 三角形 刷题

【深基3.习8】三角形分类

题目描述

给出三条线段 a,b,c 的长度,均是不大于 10000 的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?

  • 如果三条线段不能组成一个三角形,输出Not triangle
  • 如果是直角三角形,输出Right triangle
  • 如果是锐角三角形,输出Acute triangle
  • 如果是钝角三角形,输出Obtuse triangle
  • 如果是等腰三角形,输出Isosceles triangle
  • 如果是等边三角形,输出Equilateral triangle

如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。

输入格式

输入 3 个整数 a、b 和 c。

输出格式

输出若干行判定字符串。

样例 1

样例输入 1

3 3 3

样例输出 1

Acute triangle
Isosceles triangle
Equilateral triangle

样例 2

样例输入 2

3 4 5

样例输出 2

Right triangle

样例 3

样例输入 3

6 10 6

样例输出 3

Obtuse triangle
Isosceles triangle

样例 4

样例输入 4

1 14 5

样例输出 4

Not triangle

提示

当两短边的平方和大于一长边的平方,说明是锐角三角形。

当两短边的平方和等于一长边的平方,说明是直角三角形。

当两短边的平方和小于一长边的平方,说明是钝角三角形。

解:

这道题很明显是一道很基础的题目,有一点知识就是:如何根据三边的长度来判断是锐角三角形还是钝角三角形。

如果最长边平方>另外两边的平方和,则这个三角形是钝角三角形

如果最长边平方<另外两边的平方和,则这个三角形是锐角三角形

自己没看答案写的程序(很丑陋,轻喷)

#include <stdio.h>
#include<math.h>
int maxn(int a,int b,int c)
{
	if(a>b && a>c)
	return a;
	if(b>a && b>c)
	return b;
	if(c>a && c>b)
	return c;
	if(a==b && b==c)
	return -1;
}
int main ()
{
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	if( (a+b)>c && (a+c)>b && (b+c)>a && (a-b)<c && (a-c)<b && (b-c)<a)
	{
		if( a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
		{
			printf("Right triangle\n");
			if(a==b || a==c || b==c)
			{
				printf("Isosceles triangle\n");
			}
		}
		if(2*pow(maxn(a,b,c),2)>a*a+b*b+c*c){
			printf("Obtuse triangle\n");
			if(a==b || a==c || b==c)
			{
				printf("Isosceles triangle\n");
			}			
		}
		if(2*pow(maxn(a,b,c),2)<a*a+b*b+c*c)
		{
			printf("Acute triangle\n");
			if(maxn(a,b,c)==-1)
			{
				printf("Isosceles triangle\n");
				printf("Equilateral triangle\n");
			}
			else if(a==b || a==c || b==c)
			{
				printf("Isosceles triangle\n");
			}
			 
		}
	} 
	else 
	{
		printf("Not triangle\n");
	}
	return 0;
}

然后看了大佬的解题过程之后:

思路就是先排序会写得更简单一点

#include <cstdio>
#include<algorithm>
using namespace std;
int main ()
{
	int a,b,c;
	scanf("%d%d%d", &a, &b, &c);
	int d[4]={-1,a,b,c};
	sort(d+1,d+4);
	if(d[1]+d[2]<=d[3]){
		printf("Not triangle\n");
		return 0;
	} 
	if(d[1]*d[1]+d[2]*d[2]==d[3]*d[3]) printf("Right triangle\n");
	else if(d[1]*d[1]+d[2]*d[2] > d[3]*d[3]) printf("Acute triangle\n");
	else if(d[1]*d[1]+d[2]*d[2] < d[3]*d[3]) printf("Obtuse triangle\n");
	if(d[1] == d[2] || d[2] == d[3]) printf("Isosceles triangle\n");
	if(d[1]==d[3]) printf("Equilateral triangle\n");
	return 0;
}

标签:输出,triangle,int,样例,&&,洛谷,三角形,刷题
From: https://www.cnblogs.com/Jinx8823/p/16875553.html

相关文章

  • LeetCode刷题记录.Day10
    四数相加II题目链接454.四数相加II-力扣(LeetCode)classSolution{public:intfourSumCount(vector<int>&nums1,vector<int>&nums2,vector<int>&nums3,v......
  • 洛谷B2078含k个三的数
    自行体会如果实在不会,就调试一下#include<stdio.h>intmain(){longintm;intn,k,num=0;scanf("%ld%d",&m,&k);for(inti=1;i<=15;i++){if(i=......
  • 洛谷-P3478 STA-Station
    STA-Station换根dp模板去到相邻的点可以根据去到的点的子树有多少个结点,来调整当前的值#include<iostream>#include<cstdio>#include<algorithm>#include<vecto......
  • 洛谷 [AGC021B] Holes 蓝 题解
    前言学校基础模拟赛的题,当时有思路但是不太会写凸包就没做,下来看了看,自己的思路大部分是正确的,有些细节没有想到,在此写篇题解。我用的是Andrew求凸包。思路答案为0......
  • CSU 1812 三角形和矩形
    DescriptionBobo有一个三角形和一个矩形,他想求他们交的面积。1,y1,x2,y2,x3,y3,x4,y4 描述。表示三角形的顶点坐标是(x1,y1),(x......
  • 洛谷P1434滑雪分析
    [SHOI2002]滑雪题目描述Michael喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来......
  • 洛谷P1605题解分析
    迷宫题目描述给定一个\(N\timesM\)方格的迷宫,迷宫里有\(T\)处障碍,障碍处不可通过。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障......
  • 双指针_Leetcode刷题_11/100
    算法解释双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一个数组,遍历的方向相同且不会相交,则也称......
  • 贪心算法_Leetcode刷题_7/100
    贪心算法采用贪心策略,保证每次操作是局部最优的,从而使随后结果是全局最优的。455.分配饼干贪心策略:尽量把最小的饼干分配给胃口最小的孩子。我的代码:算法描述:将......
  • 洛谷 P1195.口袋的天空
    题目链接:https://www.luogu.com.cn/problem/P1195今天上算法设计课,复习一下Kruskal和并查集。 放AC代码1#include<bits/stdc++.h>2usingnamespacestd;3......