牛客网NC276055:三根木棒能否组成三角形问题详解(ACM中的A题)

牛客网NC276055:三根木棒能否组成三角形问题详解(ACM中的A题)

📌 题目描述

📊 输入输出格式

输入描述:

  • 输入三个正整数 a a a, b b b, c c c 表示三根木棒的长度
  • 取值范围: 1 ≤ a , b , c ≤ 2 × 1 0 9 1 \leq a, b, c \leq 2 \times 10^9 1≤a,b,c≤2×109

输出描述:

  • 如果有可能组成三角形,输出 "Yes"
  • 否则输出 "No"

🧮 解题思路

要判断三根木棒能否组成三角形,我们需要应用三角形的基本性质:任意两边之和大于第三边

我们需要分别尝试将三根木棒中的每一根长度翻倍,判断修改后的三根木棒是否能够满足三角形的构成条件:

  1. 将第一根木棒长度翻倍,判断 ( 2 a , b , c ) (2a, b, c) (2a,b,c) 是否能组成三角形
  2. 将第二根木棒长度翻倍,判断 ( a , 2 b , c ) (a, 2b, c) (a,2b,c) 是否能组成三角形
  3. 将第三根木棒长度翻倍,判断 ( a , b , 2 c ) (a, b, 2c) (a,b,2c) 是否能组成三角形

只要有一种方案能够构成三角形,答案就是 "Yes",否则为 "No"。

💻 代码实现

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
    int a,b,c;
    cin>>a>>b>>c;
    int d,e,f;
    d=a*2,e=b*2,f=c*2;
    if(d+b>c&&b+c>d&&d+c>b||e+a>c&&e+c>a&&a+c>e||f+a>b&&f+b>a&&a+b>f){
        cout<<"Yes";
        return 0;
    }
    else cout<<"No";
    return 0;
}

📝 代码解析

  1. 首先定义变量 a, b, c 存储三根木棒的原始长度
  2. 然后定义变量 d, e, f 分别表示三根木棒翻倍后的长度:
    • d = a*2 表示第一根木棒翻倍
    • e = b*2 表示第二根木棒翻倍
    • f = c*2 表示第三根木棒翻倍
  3. 使用条件判断语句检查三种情况下是否能组成三角形:
    • 第一种情况:(d, b, c) 能否组成三角形,需满足 d+b>c && b+c>d && d+c>b
    • 第二种情况:(a, e, c) 能否组成三角形,需满足 e+a>c && e+c>a && a+c>e
    • 第三种情况:(a, b, f) 能否组成三角形,需满足 f+a>b && f+b>a && a+b>f
  4. 如果任一情况满足条件,输出 "Yes";否则输出 "No"

🌟 示例分析

示例1: a=1, b=2, c=3

  • 将第一根木棒翻倍后:(2, 2, 3)
    • 2+2>3 ✓
    • 2+3>2 ✓
    • 2+3>2 ✓
  • 满足三角形条件,输出 "Yes"

示例4: a=1, b=1, c=3

  • 将第一根木棒翻倍后:(2, 1, 3)
    • 2+1>3 ✗ (不满足)
  • 将第二根木棒翻倍后:(1, 2, 3)
    • 1+2>3 ✗ (不满足)
  • 将第三根木棒翻倍后:(1, 1, 6)
    • 1+1>6 ✗ (不满足)
  • 都不满足三角形条件,输出 "No"

💡 总结

本题的关键是理解三角形的构成条件,并尝试对每根木棒进行翻倍操作,判断是否有可能满足三角形条件。通过枚举所有可能的情况,我们可以得到正确答案。

相关推荐
血小板要健康1 分钟前
链表 阶段算法总结
java·数据结构·笔记·算法·leetcode·链表
a187927218318 分钟前
【算法】回溯算法(三):三记重锤与 N 皇后——记忆化、状态设计与三层漏斗
算法·leetcode·go·剪枝·回溯·n皇后·算法讲解
HugoStudio_SWAN2 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
青 春 记 忆3 小时前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode
raindayinrain3 小时前
c++并发
c++
j7~3 小时前
【C++】智能指针的使用及其原理--详解
c++·c++11·内存泄漏·智能指针·raii·boost智能指针
阳明山水4 小时前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
桐盛科技4 小时前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算
wuyk5554 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
-dzk-4 小时前
【链表】LC 138.随机链表的复制
数据结构·链表