周长一定,问能组成多少种直角三角形(华为)

2023-10-24 21:21

本文主要是介绍周长一定,问能组成多少种直角三角形(华为),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 题目

一个直角三角形的周长是120的话,那么它的三边可以是20,48,52,或者24,45,51,还有30,40,50,有3种不同的解。现在你想知道如果给定一个直角三角形的周长,那么这个周长最多能有多少解呢?假设边长为整数。

输入:120
输出:3

2.方案一:

解题思路:使用两次循环,指定i<=j,这样可以避免i与j重复枚举(例如345,435是同一个答案)来节约时间,k作为斜边,直接通过i、j 和周长便可以计算出k=len-i-j,减少一重循环。

注:

  • 三角形的边长i,从1到给定周长的范围变化,即 1 <i< len
  • 三角形的边长j,从i到给定周长的范围变化,即 i <j< len
  • 三角形的边长k,k的长度为总长度减去i和j的长度,即k= len-i-j
public class FindNum1 {public static void findNum(int len){int count=0;for(int i=1;i<len;i++){for(int j=i;j<len;j++){int k=len-i-j;if(i*i+j*j==k*k){count++;}}}System.out.println(count);}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int len=scanner.nextInt();findNum(len);}
}
方案二:

解题思路:我们对问题进行数学分析:

在二重循环的基础上,对i 和j 的范围进行限制,提高了查找效率。

public class FindNum2 {public static void findNum2(int len){int count=0;for(int i=1;i<len/3;i++){for(int j=i;j<len/2;j++){int k=len-i-j;if(i*i+j*j==k*k){count++;}}}System.out.println(count);}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int len=scanner.nextInt();long start=System.currentTimeMillis();findNum2(len);long end=System.currentTimeMillis();System.out.println(end-start);}
}
方案三:

让我们重新回到数学上,2个方程2个未知数,我们可以轻松求出 j 关于i、l 的表达式。
在这里插入图片描述
通过数学方法,我们获得了j的表达式,再判断一下j小于l并且j是整数便可。这样的程序只有一重循环了,我们将程序从一开始的超时优化到了1ms,这是枚举常见的优化方法——利用数学方法来减少循环次数。


public class FindNum3 {public static void findNum3(int len){int count=0;for(int i=1;i<len/3;i++){double j = len - (double) len * len/ (2 * len - 2 * i);if (i < j && j - (int) j < 1e-5) {count++;}}System.out.println(count);}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int len=scanner.nextInt();findNum3(len);}
}

参考博客:https://blog.csdn.net/gooding300/article/details/86555475

这篇关于周长一定,问能组成多少种直角三角形(华为)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/277851

相关文章

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

跟我一起玩《linux内核设计的艺术》第1章(四)——from setup.s to head.s,这回一定让main滚出来!(已解封)

看到书上1.3的大标题,以为马上就要见着main了,其实啊,还早着呢,光看setup.s和head.s的代码量就知道,跟bootsect.s没有可比性,真多……这确实需要包括我在内的大家多一些耐心,相信见着main后,大家的信心和干劲会上一个台阶,加油! 既然上篇已经玩转gdb,接下来的讲解肯定是边调试边分析书上的内容,纯理论讲解其实我并不在行。 setup.s: 目标:争取把setup.

华为 HCIP-Datacom H12-821 题库 (13)

有需要题库的可以看主页置顶 1.可以携带外部路由的 tag 标签信息的是以下哪一类 LSA? A、4 类 LSA B、5 类 LSA  C、3 类 LSA  D、2 类 LSA 答案:B 解析: 暂无解析 2..两台路由器直连,并设定网络类型为 p2p 建立OSPF 邻居。那么两台路由器传输 OSPF 报文的目的 IP 地址是以下哪一项? A、使用组播地址 224.0.0.6 B

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消

华为23年笔试题

消息传输 题目描述 在给定的 m x n (1 <= m, n <= 1000) 网格地图 grid 中,分布着一些信号塔,用于区域间通信。 每个单元格可以有以下三种状态:  值 0 代表空地,无法传递信号;  值 1 代表信号塔 A,在收到消息后,信号塔 A 可以在 1ms 后将信号发送给上下左右四个方向的信号塔; 值 2 代表信号塔 B,在收到消息后,信号塔 B 可以在 2ms

实现的动态规划问题华为笔试题C++实现

秋招刷力扣题,我觉得我对动态规划不是熟练,在此处做总结 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。我觉得最大的问题就是对问题的分解,分解后的问题与分解前的问题具有相同的决策机制,将决策机制进行抽象,最终可以得到对应的解; 动态规划中开始介绍的爬楼梯等问题,答

828华为云征文|基于华为云Flexus云服务器X实例部搭建Halo博客平台

华为云征文|基于华为云Flexus云服务器X实例部搭建Halo博客平台 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、Halo介绍2.1 Halo 简介2.2 Halo 特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、购买华为云Flexus云服务器X实例4.

三方登录 - 华为登录

1.1. 开发准备 当应用需要使用以下开放能力的一种或多种时,为正常调试运行应用,需要预先添加公钥指纹 Account Kit(华为帐号服务)Call Kit(通话服务)Game Service Kit(游戏服务)Health Service Kit(运动健康服务)IAP Kit(应用内支付服务)Live View Kit(实况窗服务,当需要使用Push Kit时必须执行此步骤)Map Kit

828华为云征文|基于Flexus云服务器X实例的应用场景-拥有一款自己的ssl监控工具

先看这里 写在前面效果图华为云Flexus云服务器X实例介绍特点可选配置购买 连接服务器Uptime-kuma简介开源信息部署准备工作:docker部署命令访问uptime-kuma 基本配置总结 写在前面 作为一个个人开发者,相信你手里肯定也有不少自己的服务,有的服务呢也是https的。 以前ssl各厂都是可以免费申请一年的,我们更换的频率还好,比较小;但是最近,各厂都