九度oj 题目1048:判断三角形类型

九度oj 题目1048:判断三角形类型

题目描述

给定三条边,请你判断一下能不能组成一个三角形。

如果能组成三角形,你还需要告诉我们它的类型:

  • 等边三角形 Equilateral Triangle
  • 等腰三角形 Isosceles Triangle
  • 直角三角形 Right Triangle
  • 普通三角形 Common Triangle
  • 不能构成三角形 Not A Triangle

输入格式

输入数据首先包含一个整数T,表示测试数据组数然后是T组数据。每组数据占一行,包含三个正整数a,b,c (0 < a,b,c < 1,000,000)。

输出格式

对于每组数据,如果它们能组成一个三角形,请输出三角形的类型,否则请输出"Not A Triangle"。

样例

输入样例:

4
4 4 4
4 4 7
3 4 5
1 2 3

输出样例:

Equilateral Triangle
Not A Triangle
Right Triangle
Not A Triangle

解题思路

判断三角形类型,需要先判断它是否能构成三角形。对于三条边a,b,c的组合来说,能组成三角形的条件是:

  • a+b>c
  • a+c>b
  • b+c>a

如果能构成三角形,则需要判断三角形的类型。根据定义可以分为以下几种:

  • 等边三角形:三条边都相等
  • 等腰三角形:仅有两条边相等
  • 直角三角形:有一条边是直角边,即a²+b²=c²(a、b是直角边,c是斜边)
  • 普通三角形:三条边不相等且不是直角三角形

需要注意的是,由于输入数据可能存在规律性,对于多组数据输入,需要每组数据输出后清空缓存。

代码实现

下面是用Python编写的解题代码:

import sys

def judge_triangle(a, b, c):
    if a + b > c and a + c > b and b + c > a:
        if a == b == c:
            print("Equilateral Triangle")
        elif a == b or a == c or b == c:
            print("Isosceles Triangle")
        elif a*a + b*b == c*c or a*a + c*c == b*b or b*b + c*c == a*a:
            print("Right Triangle")
        else:
            print("Common Triangle")
    else:
        print("Not A Triangle")

if __name__ == "__main__":
    T = int(input())
    for i in range(T):
        a, b, c = map(int, sys.stdin.readline().split())
        judge_triangle(a, b, c)
        # 清空缓存
        sys.stdin.flush()

总结

本题需要判断三角形是否存在和判断三角形的类型,根据定义即可。

在多组数据输入时,需要及时清空缓存,避免缓存导致的错误答案。使用sys.stdin.flush()函数即可实现清空缓存的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:九度oj 题目1048:判断三角形类型 - Python技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • JMETER用户变量作用域测试流程

    JMETER用户变量作用域测试流程攻略 1. 简介 JMETER是一款功能强大的性能测试工具,可以模拟多种负载情况对系统进行测试。用户变量是JMETER中的一种特殊变量,可以在测试过程中动态地改变其值。用户变量的作用域决定了其在测试计划中的可见范围。 2. 用户变量作用域 用户变量的作用域可以分为以下几种:- 线程组作用域:变量仅在当前线程组中可见。- 全局…

    other 2023年8月19日
    00
  • Android实现ListView左右滑动删除和编辑

    Android实现ListView左右滑动删除和编辑攻略 在Android中实现ListView左右滑动删除和编辑功能可以通过以下步骤完成: 步骤1:添加依赖库 首先,在项目的build.gradle文件中添加以下依赖库: dependencies { implementation ‘com.android.support:recyclerview-v7:2…

    other 2023年9月6日
    00
  • Excel 2007自定义数字格式的准则

    Excel 2007自定义数字格式的准则,主要包括以下几个方面的内容: 数字格式代码组成 数字格式代码由四个部分组成:- 正数格式:用于正整数、正小数和0的格式;- 负数格式:用于负整数、负小数的格式;- 零值格式:用于0的格式;- 文本格式:用于文本的格式。 例如,以下这种格式:” $ #,##0.00_ ;_ $ -#,##0.00 ; $* \” – …

    other 2023年6月25日
    00
  • vue cli3 实现分环境打包的步骤

    实现分环境打包的步骤大致如下: 在项目根目录下创建 .env.development,.env.production,.env.test 等环境变量配置文件,分别对应开发环境、生产环境、测试环境等。其中,.env 文件是默认的主配置文件,所有环境的公共的变量都可以写在这个文件中,具体变量值可以在其他环境文件中覆盖。 示例1:在 .env 文件中设置公共变量,…

    other 2023年6月27日
    00
  • 关于dart:如何在flutter中将list转换为int类型

    在Flutter中,可以使用map()函数和int.parse()函数将List<String>类型的列表转换为List<int>类型的列表。以下是关于如何在Flutter中将List<String>类型的列表转换为List<int>类型的列表的完整攻略: 使用map()函数和int.parse()函数 可以使…

    other 2023年5月8日
    00
  • Win10系统Bash强行跑出Linux GUI应用介绍

    下面是“Win10系统Bash强行跑出Linux GUI应用介绍”的完整攻略,包含如何安装图形化界面、安装Linux GUI应用、配置X Server等内容。 准备工作 首先,你需要确保你的Win10系统支持WSL(Windows Subsystem for Linux)功能,如果还没有开启,请先打开该功能。 其次,你需要在Win10系统上安装一个Windo…

    other 2023年6月26日
    00
  • NET LOCALGROUP命令详解(将用户添加到管理员组等)

    NET LOCALGROUP命令详解:将用户添加到管理员组等 概述 NET LOCALGROUP命令是一种在 Windows 系统中管理本地组的命令行工具,提供了向本地组中添加、删除和更改用户和其他本地组的成员的功能。 语法 以下是NET LOCALGROUP命令的基本语法: NET LOCALGROUP [组名] [用户名] [/ADD | /DELETE…

    other 2023年6月27日
    00
  • gitstash命令及提交指定文件

    git stash命令及提交指定文件 在使用Git进行版本控制的过程中,我们会经常使用git stash命令暂时保存一些未提交的修改,以便于在后续的开发工作中恢复这些修改。 git stash命令 git stash命令的主要作用是将当前分支中的所有未提交的修改(包括已经被Git跟踪的文件和还未被跟踪的文件)暂时存储起来,并将当前工作目录恢复成上次提交的状态…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部