青训营刷题笔记18

一个中等题..

问题描述

小C希望构造一个包含n个元素的数组,且满足以下条件:

  1. 数组中的所有元素两两不同。
  2. 数组所有元素的最大公约数为 k
  3. 数组元素之和尽可能小。

任务是输出该数组元素之和的最小值。


测试样例

样例1:

输入:n = 3 ,k = 1

输出:6

样例2:

输入:n = 2 ,k = 2

输出:6

样例3:

输入:n = 4 ,k = 3

输出:30

解题思路

首先,了解题目给定的要求:

  1. 最大公约数为 k : 这意味着所有的数组元素都必须是 k 的倍数。换句话说,我们可以先将数组元素构造为 k * m 这样的形式,其中 m 是一个正整数。

  2. 元素两两不同 : 数组中的每个元素必须是不同的,因此 m 必须是不同的整数。

  3. 数组元素之和尽可能小 : 我们需要在符合条件的情况下,尽量选择小的整数 m 来构造数组,从而使得数组的和尽可能小。

步骤:
  • 对于给定的 nk,我们需要构造一个数组,数组元素的形式是 k * m,其中 m 是从 1 开始的连续整数,确保元素之间不同。

  • 所以,最小的 n 个满足条件的元素可以选择为:k * 1, k * 2, k * 3, ..., k * n。这样我们得到的数组是 [k*1, k*2, k*3, ..., k*n]

  • 数组元素的和就是这些元素的和,计算方式为:

    根据等差数列求和公式,1 到 n 的和为:

    因此,最终的数组元素之和为:

代码实现

解释

  • solution 函数接收两个参数:nk,分别代表数组的元素个数和最大公约数。
  • 首先计算从 1n 的和(即 1 + 2 + 3 + ... + n),然后乘以 k 得到数组元素之和。
  • main 函数中,我们测试了三个示例用例,分别输出了是否符合预期结果。

复杂度分析

  • 时间复杂度:计算 1n 的和需要常数时间,因此整体时间复杂度为 O(1)
  • 空间复杂度:只用了常数空间,空间复杂度为 O(1)
相关推荐
DXM052115 分钟前
第9期|从机器学习到深度学习:AI遥感解译的进化逻辑
人工智能·算法·计算机视觉
小蒋学算法23 分钟前
算法-阶乘函数后K个零
算法
weixin_3077791329 分钟前
智能模拟数据生成平台:生成式AI合成数据技术重塑开发测试效能
人工智能·测试工具·算法·测试用例
Darling噜啦啦33 分钟前
JavaScript 数组深度解析:从纯函数到二维数组陷阱,一文吃透前端数据结构核心
前端·javascript·数据结构
不负岁月无痕1 小时前
C++ 模板核心内容与高频面试题汇总
java·开发语言·c++
AOwhisky1 小时前
学习自测与解析:MySQL第五、六、七期核心知识点详解
运维·数据库·笔记·学习·mysql·云计算
无限进步_1 小时前
从零实现一个迷你Shell——深入理解Linux命令行解释器
linux·运维·服务器·开发语言·c++·chrome
羊羊小栈1 小时前
Uplift营销供应链协同决策系统(基于Uplift因果推断与运筹优化算法)
前端·人工智能·算法·毕业设计·大作业
niuniuyi~2 小时前
QT学习笔记
笔记·qt·学习
咸甜适中2 小时前
rust语言学习笔记Trait(十六)Error(错误)
笔记·学习·rust