九度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日

相关文章

  • C#组件FormDragger窗体拖拽器详解

    C#组件FormDragger窗体拖拽器详解 简介 FormDragger是一款适用于C# WinForm应用程序开发的拖拽组件,可以实现拖拽窗体的功能,提高用户体验。 安装 将FormDragger.dll文件添加到工程的引用中即可使用。 使用方法 在需要拖拽的窗口中添加FormDragger控件。可使用如下代码进行添加: csharp FormDragg…

    other 2023年6月26日
    00
  • 详解Redis用链表实现消息队列

    下面是详解Redis用链表实现消息队列的完整攻略。 1. 简介 首先,消息队列(message queue)是一种发送和接收消息的机制。消息队列一般应用于解耦、异步处理和削峰填谷等场景。Redis提供的消息队列是使用链表(list)实现的,它提供的API能够满足大部分的队列操作需求。 2. 链表实现的Redis消息队列 Redis使用链表来实现消息队列,链表…

    other 2023年6月27日
    00
  • c#winform窗口页面一打开就加载的实现方式

    要在C# WinForm窗口页面一打开就加载某个操作/动作,我们可以使用窗口的Load事件。窗口Load事件在窗口第一次展示时被触发,因此在这个事件中编写的代码会在窗口首次加载时执行。 以下是具体实现步骤和示例说明: 在窗口中加入一个Load事件 我们可以在设计模式下,单击窗口,或选中窗口的属性,选择“事件”图标,然后在下拉列表中找到“Load”事件。双击它…

    other 2023年6月25日
    00
  • 现在什么键是win7关机重启快捷键有哪些快速关机的方法

    关机和重启是我们日常使用电脑时最常用到的操作之一。在使用Windows 7系统时,可以使用一些快捷键来实现快速关机和重启。下面是详细的攻略步骤。 使用快捷键实现快速关机和重启 Windows 7系统有两套快捷键来实现快速关机和重启。一套是使用键盘上的功能键,另外一套是使用命令行。 使用键盘上的功能键 Windows 7系统使用Shift键来激活快捷键,同时结…

    other 2023年6月27日
    00
  • plsql安装、plsql汉化、激活

    当然,我可以为您提供有关“PL/SQL安装、汉化、激活”的完整攻略,以下是详细说明: PL/SQL安装 PL/SQL是Oracle数据库的编程语言,可以使用它来编写存储过程、触发器、函数等。以下是PL/SQL安装的步骤: 下载Oracle客户端 首先,需要从Oracle官网下载Oracle客户端。根据自己的操作系统选择相应的版本,下载后解压缩到本地目录。 安…

    other 2023年5月7日
    00
  • WxJava微信公众号开发入门实战

    WxJava是一个Java语言开发的微信公众号SDK,我们可以使用它快速开发微信公众号应用。下面是WxJava微信公众号开发的完整攻略。 1. 准备工作 在开始微信公众号开发前,我们需要完成以下准备工作: 注册微信公众平台账号; 成为微信公众平台开发者; 创建测试公众号; 获取微信公众号的AppID和AppSecret; 下载并导入WxJava SDK。 2…

    other 2023年6月27日
    00
  • elasticsearch管理工具

    以下是使用Elasticsearch管理工具的完整攻略: Elasticsearch管理工具 Elasticsearch是一个流行的开源搜索和分析引擎,用于处理大量数据。以下是使用Elasticsearch管理工具的详细步骤: 1. 安装Elasticsearch 首先,您需要安装Elasticsearch。您可以在Elasticsearch官方网站上找到安…

    other 2023年5月7日
    00
  • 实现一个简单的虚拟DOM

    实现一个简单的虚拟DOM 虚拟DOM是前端开发中常用的一种技术,它可以提高页面渲染的效率,减少DOM操作的次数。本文将提供一个完整的攻略,包括虚拟DOM的基本原理、实现方法和两个示例说明。 基本原理 虚拟DOM的基本原理是将页面的DOM结构抽象成一个JavaScript对象,称为虚拟DOM。当页面需要更新时,先对虚拟DOM进行操作,然后将虚拟DOM与页面的实…

    other 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部