华为OD机试真题 JavaScript 实现【勾股数元组】【2022Q4 100分】,附详细解题思路

news2024/12/23 6:10:04

在这里插入图片描述

一、题目描述

如果三个正整数A、B、C ,A²+B²=C²则为勾股数 如果ABC之间两两互质,即A与B,A与C,B与C均互质没有公约数, 则称
其为勾股数元组。 请求出给定n~m范围内所有的勾股数元组。

二、输入描述

起始范围 1 < n < 10000 n < m < 10000

1
20

三、输出描述

ABC保证A<B<C 输出格式A B C 多组勾股数元组,按照A B C升序的排序方式输出。 若给定范围内,找不到勾股数元组时,输出Na。

3 4 5
5 12 13
8 15 17

四、解题思路

  1. 读取输入的起始范围,记为n和m;
  2. 创建一个列表lists,用于保存找到的勾股数元组;
  3. 遍历范围n到m之间的所有整数,记当前整数为i:
    • 在范围[i+1, m]内遍历所有整数,记当前整数为j:
    • 若满足check1(i, j, m),即i、j、(i²+j²)的平方根均为整数且不超过m,满足勾股数的条件:
    • 创建一个列表list,将i、j和(i²+j²)的平方根按升序添加到list中;
    • 将list添加到lists中;
  4. 遍历lists,记当前元组索引为idx:
    • 若满足check2(list.get(0), list.get(1), list.get(2)),即元组中的三个数存在公约数:
    • 从lists中移除当前元组;
    • 将idx重置为0;
    • 否则,递增idx;
  5. 遍历结束后,输出剩余的lists中的元组;

五、JavaScript算法源码

function calculate(n, m) {
    const lists = [];
    for (let i = n; i <= m; i++) {
        for (let j = i + 1; j <= m; j++) {
            if (check1(i, j, m)) {
                const list = [i, j, Math.sqrt(i * i + j * j)];
                list.sort((a, b) => a - b);
                lists.push(list);
            }
        }
    }

    let idx = 0;
    while (idx < lists.length) {
        const list = lists[idx];
        if (check2(list[0], list[1], list[2])) {
            lists.splice(idx, 1);
            idx = 0;
        } else {
            idx++;
        }
    }

    return lists;
}

function check1(a, b, max) {
    const mul = a * a + b * b;
    const res = Math.sqrt(mul);
    const sub = Math.floor(res);
    return res * res === sub * sub && sub <= max && sub > b;
}

function check2(a, b, c) {
    for (let i = 2; i < c; i++) {
        if ((a % i === 0 && b % i === 0) || (a % i === 0 && c % i === 0) || (b % i === 0 && c % i === 0)) {
            return true;
        }
    }
    return false;
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据结构初阶]单链表

顾名思义&#xff0c;单链表就是一个相邻节点用一个单向指针串起来&#xff0c;形成一种链式结构&#xff0c;那怎么将这些节点连结起来方便管理呢&#xff1f; 目录 单链表定义 申请空间 创建节点 打印链表 尾插 尾删 头插 头删 查找 插入 删除 pos后删除 pos位置删除…

Python 接口测试之接口关键字封装

引言 我们使用RF做UI自动化测试的时候&#xff0c;使用的是关键字驱动。同样&#xff0c;Python做接口自动化测试的时候&#xff0c;也可以使用关键字驱动。但是这里并不是叫关键字驱动&#xff0c;而是叫数据驱动。而接口测试的关键字是什么呢&#xff1f; 我们数据驱动的载体…

知识图谱实战应用15-知识图谱在生物基因学上的应用,实现基因与疾病关联查询

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用15-知识图谱在生物基因学上的应用,实现基因与疾病关联查询。知识图谱在生物基因学中的应用非常广泛,可以帮助研究人员更好地理解和发现基因与疾病之间的关联关系,并推进相关领域的发展。 目录 引言知识图谱简介生物…

Linux之命令别名---alias

Linux之命令别名 定义 别名是命令的快捷方式。为那些需要经常执行&#xff0c;但需要很长时间输入的长命令创建快捷方式很有用 语法格式 alias 别名’原命令 -选项/参数’ 基本用法 查看设置的别名 [redhat8alocalhost ~]$ alias 删除别名 [redhat8alocalhost ~]$ unalia…

你见过的这里都有,开源Web性能测试工具集合

1、JMeter。这个也不用多介绍&#xff0c;基本属于做过Web性能测试都会接触的工具。Apache旗下的开源项目&#xff0c;属于一个Java桌面应用程序。优势是开源免费&#xff0c;扩展能力强。自身性能是硬伤。 2、Locust。Web性能测试的蝗药师&#xff0c;开源免费&#xff0c;并发…

C语言解决任意一个整数分解,逆序输出

C语言解决任意一个整数分解,逆序输出 输入&#xff1a;1234 输出&#xff1a;1 2 3 4 思路&#xff1a; 对于任意一个整数num, &#xff08;1&#xff09;num%10就可以得到其个位数的数字&#xff0c;例如&#xff1a;1234%104 &#xff08;2&#xff09;num/10就可以获取到这个…

【SQL】sqladvisor

文章目录 概述架构流程产品特点安装部署使用帮助输出命令行传参调用配置文件传参调用测试一:对小表进行测试测试二&#xff1a;对大表有索引测试测试三&#xff1a;对大表无索引进行测试测试四&#xff1a;多条SQL同时分析&#xff1a; 来源 概述 SQLAdvisor是由美团点评公司技…

AntDB 企业增强特性介绍——分布式集群下强一致备份恢复技术

AntDB 使用 barman 实现数据的备份和恢复&#xff0c;但是集群节点部署在多台主机上&#xff0c;每个节点单独备份和恢复。多台服务器时钟不同步的情况下同时备份后&#xff0c; 无法真正实现基于时间点的数据完全和不完全恢复。AntDB 提供基于时间点的全局一致性备份恢复。 A…

【趣味JavaScript】我的天! 居然工作了5年的前端开发都不知道eval函数其中居然暗藏玄机!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&#x1…

【redis-初级】

文章目录 1.非关系型数据库&#xff08;NoSQL&#xff09;2.在Linux上安装redis2.1 安装前准备2.2 安装2.3 启动2.4 关闭 3. redis客户端3.1 命令客户端3.2redis远程客户端3.3 redis编程客户端 1.非关系型数据库&#xff08;NoSQL&#xff09; 2.在Linux上安装redis 2.1 安装前…

抑郁症评估干预系统开发 还你美好人生

随着时代的发展&#xff0c;生活压力越来越大&#xff0c;抑郁症似乎也成为了很常见的心理健康问题&#xff0c;让很多家庭苦不堪言&#xff0c;轻者痛苦折磨&#xff0c;重者甚至会出现自虐自杀&#xff0c;所以人们也越来越重视心理健康问题&#xff0c;想要摆脱抑郁症的束缚…

HP DA1023电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件配置 硬件型号驱动情况 主板HP DA1023 处理器Intel(R) Core(TM) i5-8265U已驱动 内存8 GB 2400 MHz DDR4.已驱动 硬盘Samsung SSD 980 250GB(macOS)已驱动 显卡I…

从零开始 Spring Boot 37:初始化 ApplicationContext

从零开始 Spring Boot 37&#xff1a;初始化 ApplicationContext 图源&#xff1a;简书 (jianshu.com) 从前文可以知道&#xff0c;作为 Ioc 容器的 ApplicationContext&#xff0c;需要进行一系列步骤来初始化以最终就绪&#xff08;对于 Web 应用来说就是可以提供Http服务&a…

[PyTorch][chapter 39][nn.Module]

前言&#xff1a; pytorch.nn是专门为神经网络设计的模块化接口. nn构建于autograd之上,可以用来定义和运行神经网络.是所有类的父类. 目录&#xff1a; 基本结构 常用模块 container(容器&#xff09; CPU,GPU 部署 train-test 环境切换 flatten MyLinear 一…

【kali】设置系统方式为中文

目录 1、右击终端 2、输入命令回车 3、需要输入当前账户密码 4、选择语言 5、再次确定 6、输入命令重启 1、右击终端 2、输入命令回车 sudo dpkg-reconfigure locales 3、需要输入当前账户密码 4、选择语言 依次选中en_US.UTF-8 / zh_CN.GBK&#xff08;没找到&#xf…

野火启明RenesasRA4M2 UDS诊断bootloader 升级MCU

基于can总线的UDS软件升级 最近学习UDS诊断协议&#xff08;ISO14229&#xff09;&#xff0c;是一项国际标准&#xff0c;为汽车电子系统中的诊断通信定义了统一的协议和服务。它规定了与诊断相关的服务需求&#xff0c;并没有设计通信机制。ISO14229仅对应用层和会话层做出了…

微信一天可以加多少个好友?

微信作为最大的私域流量池&#xff0c;几乎所有的人都会往微信引流&#xff0c;而微信每天加好友数量是有严格限制的。微信每天加多少人不会封号&#xff1f;微信每天加多少好友才不会被限制&#xff1f;微信频繁加好友被限制怎么办&#xff1f;请跟随小编的脚步一起往下看吧。…

IP地址定位原理

IP地址定位是一种通过IP地址来确定位置的技术&#xff0c;在互联网和移动网络的应用十分广泛。本文将介绍IP地址定位的原理和实现方式。 IP地址定位原理 IP地址是Internet Protocol&#xff08;简称IP&#xff09;的缩写&#xff0c;是互联网上的一个地址标识符用于识别连接到…

合成化学物:169219-08-3,Fmoc-Thr(Ac4Manα)-OH,一种甘露糖苏氨酸

Fmoc-Thr(Ac4Manα)-OH&#xff0c;甘露糖苏氨酸&#xff0c;供应商&#xff1a;陕西新研博美生物科技有限公司产品结构式&#xff1a; 产品规格&#xff1a; 1.CAS号&#xff1a;169219-08-3 2.分子式&#xff1a;C33H37NO14 3.分子量&#xff1a;671.65 4.包装规格&#xff1…

K8s in Action 阅读笔记——【14】Securing cluster nodes and the network

K8s in Action 阅读笔记——【14】Securing cluster nodes and the network 迄今为止&#xff0c;创建了 Pod 而不考虑它们允许消耗多少 CPU 和内存。但是&#xff0c;正如将在本章中看到的那样&#xff0c;设置 Pod 预期消耗和允许消耗的最大数量是任何 Pod 定义的重要部分。…