Leetcode.2862 完全子集的最大元素和

题目链接

Leetcode.2862 完全子集的最大元素和 rating : 2292

题目描述

给你一个下标从 1 1 1 开始、由 n n n 个整数组成的数组。你需要从 n u m s nums nums 选择一个 完全集,其中每对元素下标的乘积都是一个 完全平方数,例如选择 a i a_i ai a j a_j aj i ∗ j i * j ij 一定是完全平方数。

返回 完全子集 所能取到的 最大元素和

示例1:
输入:nums = [8,7,3,5,7,2,4,9]
输出:16
解释:
我们选择下标为 2 和 8 的元素,并且 1 * 4 是一个完全平方数。
示例2:
输入:nums = [8,10,3,8,1,13,7,9,4]
输出:20
解释:
我们选择下标为 1, 4, 9 的元素。1 * 4, 1 * 9, 4 * 9 是完全平方数。
提示:
  • 1 ≤ n = n u m s . l e n g t h ≤ 1 0 4 1 \leq n = nums.length \leq 10^4 1n=nums.length104
  • 1 ≤ n u m s [ i ] ≤ 1 0 9 1 \leq nums[i] \leq 10^9 1nums[i]109

解法:质因数分解 + 数学

如果 i ∗ j i * j ij 是一个 完全平方数,那么 i f i × j f j \frac{i}{f_i} \times \frac{j}{f_j} fii×fjj 也是一个完全平方数。( f i , f j f_i,f_j fi,fj 分别是 i , j i,j i,j最大平方因子,即 f i , f j f_i,f_j fi,fj 也是完全平方数)。

证明过程:
如果一个数是完全平方数,那么它的每一个质因子都应该是偶数个。

因为 i ∗ j i * j ij 是完全平方数。 i ∗ j = f i ∗ i f i ∗ f j ∗ j f j i * j =f_i * \frac{i}{f_i} *f_j* \frac{j}{f_j} ij=fifiifjfjj

因为 f i , f j f_i,f_j fi,fj 也是完全平方数,所以 i f i × j f j \frac{i}{f_i} \times \frac{j}{f_j} fii×fjj 剩余的因子都应该是 偶数个,即 i f i × j f j \frac{i}{f_i} \times \frac{j}{f_j} fii×fjj 也是一个完全平方数。

举例: 2 × 18 2 \times 18 2×18 是一个完全平方数, 2 2 2 的最大平方因子为 1 1 1 18 18 18 的最大平方因子是 9 9 9 2 1 × 18 9 = 2 × 2 = 4 \frac{2}{1} \times \frac{18}{9} = 2 \times 2 = 4 12×918=2×2=4 依旧是一个完全平方数。

两个数 i , j i,j i,j,如果 i f i = j f j \frac{i}{f_i} = \frac{j}{f_j} fii=fjj,那么 i ∗ j i *j ij 就是一个完全平方数。

所以在进行 质因数分解,获取最大平方因子 f i f_i fi时,我们以 i f i \frac{i}{f_i} fii 分组,同一组内元素两两相乘都是完全平方数。直接遍历获取最大的和返回即可。

时间复杂度: O ( n × l o g n ) O(n\times logn) O(n×logn)

C++代码:

using LL = long long;class Solution {
public:long long maximumSum(vector<int>& nums) {int n = nums.size();unordered_map<int,LL> cnt;for(int i = 1;i <= n;i++){auto x = i;int f = 1;for(int d = 2;d <= x / d;d++){if(x % d == 0){int k = 0, s = 1;while(x % d == 0){x /= d;s *= d;k++;}//如果k是奇数 需要去掉一个//比如 s = 2 * 2 * 2, 由于我们是要求最大平方因子, 所以只需要偶数个, 即 2 * 2 if(k & 1) s /= d;f *= s;}}//按 i / fi 分组记录记录元素和cnt[i / f] += nums[i - 1];}LL ans = 0;for(auto [k, v]:cnt){ans = max(ans, v);}return ans;}
};

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

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

相关文章

目标检测中的anchor机制

目录 一、目标检测中的anchor机制 1.什么是anchor boxes&#xff1f; 二、什么是Anchor&#xff1f; ​编辑三、为什么需要anchor boxes&#xff1f; 四、anchor boxes是怎么生成的&#xff1f; 五、高宽比&#xff08;aspect ratio&#xff09;的确定 六、尺度(scale)的…

工业高温烤箱:现代工业的重要设备

工业高温烤箱&#xff0c;作为现代工业生产中不可或缺的关键设备&#xff0c;以其独特的高温烘烤能力&#xff0c;为各种工业产品的加工与制造提供了强有力的支持。斯博欣将对工业高温烤箱的原理、特点、应用领域及未来发展进行简要介绍。 一、工业高温烤箱的特点 1、高温性能优…

怎么修改Visual Studio Code中现在github账号

git config --global user.name “你的用户名” git config --global user.email “你的邮箱” git config --global --list git push -u origin your_branch_name git remote add origin

编程后端:深入探索其所属的行业领域

编程后端&#xff1a;深入探索其所属的行业领域 在数字化浪潮席卷全球的今天&#xff0c;编程后端作为技术领域的重要分支&#xff0c;其所属的行业领域一直备受关注。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深入剖析编程后端所属的行业&#xff0c;并揭…

FastAPI 作为H5中流式输出的后端

FastAPI 作为H5中流式输出的后端 最近大家都在玩LLM&#xff0c;我也凑了热闹&#xff0c;简单实现了一个本地LLM应用&#xff0c;分享给大家&#xff0c;百分百可以用哦&#xff5e;^ - ^ 先介绍下我使用的三种工具&#xff1a; Ollama&#xff1a;一个免费的开源框架&…

2024年护网行动全国各地面试题汇总(1)作者:————LJS

目录 1. SQL注入原理 2. SQL注入分类&#xff1a; 3. SQL注入防御&#xff1a; 4. SQL注入判断注入点的思路&#xff1a; 5. 报错注入的函数有哪些&#xff1a; 6. SQL注入漏洞有哪些利用手法&#xff1a; 1. 文件上传漏洞的绕过方法有以下几种&#xff1a; 2. 文件上传时突破前…

centos7 xtrabackup mysql 基本测试(4)---虚拟机环境 mysql 修改datadir(有问题)

centos7 xtrabackup mysql 基本测试&#xff08;4&#xff09;—虚拟机环境 mysql 修改datadir 参考 centos更改mysql数据库目录 https://blog.csdn.net/sinat_33151213/article/details/125079593 https://blog.csdn.net/jx_ZhangZhaoxuan/article/details/129139499 创建目…

锌,能否成为下一个“铜”?

光大期货认为&#xff0c;今年以来&#xff0c;市场关注锌能否接棒铜价牛市。铜需求增长空间大&#xff0c;而锌消费结构传统&#xff0c;缺乏新亮点。虽然在供应的扰动上锌强于铜&#xff0c;但因需求乏善可陈&#xff0c;金融属性弱势&#xff0c;锌很难接棒铜&#xff0c;引…

数据质量守护者:数据治理视角下的智能数据提取策略

一、引言 在信息化和数字化高速发展的今天&#xff0c;数据已成为企业决策、运营和创新的核心要素。然而&#xff0c;随着数据量的快速增长和来源的多样化&#xff0c;数据质量问题逐渐凸显&#xff0c;成为制约企业数据价值发挥的关键因素。数据治理作为确保数据质量、提升数…

KEIL5.39 5.40 fromelf 不能生成HEX bug

使用AC6 编译,只要勾选了生成HEX。 结果报如下错误 暂时没有好的解决办法 1.替换法 2.在编译完后用命令生成HEX

蚓链研究院告诉你:蚓链数字化营销如何帮助力助你打造品牌!

在打造产品品牌的过程中&#xff0c;数字化营销会带来哪些利弊影响&#xff1f;如何消除或减少弊端&#xff1f;蚓链来和你一起分析、解决。 利处&#xff1a; 1.高度精准的目标定位&#xff1a;凭借大数据和先进算法&#xff0c;能精确锁定潜在客户&#xff0c;使营销资源得到…

k8s_探针专题

关于探针 生产环境中一定要给pod设置探针,不然pod内的应用发生异常时,K8s将不会重启pod。 需要遵循以下几个原则(本人自己总结,仅供参考): 探针尽量简单,不要消耗过多资源。因为探针较为频繁的定期执行,过于复杂和消耗资源的探针对k8s和生产环境是不利的。探针返回的结…

数栈xAI:轻量化、专业化、模块化,四大功能革新 SQL 开发体验

在这个数据如潮的时代&#xff0c;SQL 已远远超越了简单的查询语言范畴&#xff0c;它已成为数据分析和决策制定的基石&#xff0c;成为撬动企业智慧决策的关键杠杆。SQL 的编写和执行效率直接关系到数据处理的速度和分析结果的深度&#xff0c;对企业洞察市场动态、优化业务流…

针对k8s集群已经加入集群的服务器进行驱逐

例如k8s 已经有很多服务器&#xff0c;现在由于服务器资源过剩&#xff0c;需要剥离一些服务器出来 查找节点名称&#xff1a; kubectl get nodes设置为不可调度&#xff1a; kubectl cordon k8s-node13恢复可调度 kubectl uncordon k8s-node13在驱逐之前先把需要剥离驱逐的节…

File及典型案例

File File对象表示一个路径&#xff0c;可以是文件的路径&#xff0c;也可以是文件夹的路径 这个路径可以是存在的&#xff0c;也允许不存在 常见的构造方法 图来自黑马程序员网课 package com.lazyGirl.filedemo;import java.io.File;public class Demo1 {public static vo…

立式护眼台灯十大品牌哪个好?立式护眼台灯十大品牌排行

立式护眼台灯十大品牌哪个好?根据国际市场的研究数据表明&#xff0c;我国在日常生活中对电子产品的依赖度极高&#xff0c;每天看电子产品的时间超过8小时&#xff0c;出现眼睛酸痛、干涩、视觉疲劳的人群也不再少数&#xff0c;而给眼睛带来伤害的除了电子产品中所含的蓝光之…

Vue3-滑动到最右验证功能

1、思路 1、在登录页面需要启动向右滑块验证 2、效果图 3、文章地址&#xff1a;滑动验证码的实现-vue-simple-verify 2、成分分析 1、由三块构成&#xff0c;分别是底部条、拖动条、拖动移动部分 2、底部条&#xff1a;整体容器&#xff0c;包括背景、边框和文字&#xf…

端午假期新房销售较去年下降16%,6月核心城市有望继续好转

内容提要 国常会强调政策措施落地见效&#xff0c;继续研究新去库存、稳市场政策。多城市二手房市场活跃&#xff0c;新房成交回暖缓慢。端午假期新房销售下降&#xff0c;核心城市市场有望好转。 文章正文 6月7日&#xff0c;国常会强调“着力推动已出台政策措施落地见效&am…

行列视(RCV)能解决哪些问题?

答&#xff1a;发电企业传统报表工作一般由Excel或WPS进行数据收集、合并、复制、人工核算和统计等工作方式完成&#xff0c;效率低、工作量大&#xff0c;且容易出错&#xff0c;与数字化、智能化发电厂的发展步伐逐步脱节。在此背景下本系统主要解决&#xff1a; 数据收集问…

AtCoder Beginner Contest 357 C - Sierpinski carpet

题目描述 题目链接 C 代码 #include<bits/stdc.h> using namespace std;const int N 750; char G[7][N][N];void Copy(char g1[][N], char g2[][N], int r1, int c1, int r2, int c2) {for(int i r1; i < r2; i )for(int j c1; j < c2; j )g1[i][j] g2[i - …