2024-05-15:用go语言,考虑一个整数 k 和一个整数 x。 对于一个数字 num, 在其二进制表示中, 从最低有效位开始, 我们计算在 x,2x,3x 等位置处设定位的数量来确定其价值。

news/2024/9/20 18:54:41

2024-05-15:用go语言,考虑一个整数 k 和一个整数 x。

对于一个数字 num,

在其二进制表示中,

从最低有效位开始,

我们计算在 x,2x,3x 等位置处设定位的数量来确定其价值。

举例说明,

若对于 x=1,num=13,则二进制表示为000001101,对应的价值为3。

又如,当x=2,num=13,二进制表示依然为000001101,但对应的价值是1。

另一个例子是当x=3,num=362,二进制表示为101101010,价值为2。

一个数字的累加价值是从1到该数字的所有数字的总价值。

如果一个数字的累加价值小于或等于 k,则我们认为它是廉价的。

现在,我们需要找到最大的廉价数字。

输入:k = 9, x = 1。

输出:6。

答案2024-05-15:

chatgpt

题目来自leetcode3007。

大体步骤如下:

1.将输入的整数 k 转换为 int 类型,并初始化变量 num 和 pre1 为 0。

2.使用 bits.Len() 函数来计算 (k+1) << x 的二进制表示的位数,将结果减去 1,得到最高有效位的索引 i。

3.从 i 开始遍历到 0,每次循环减少 i 的值。

4.在每次循环中,计算 cnt 的值,cnt = pre1 << i + (i / x) << i >> 1。

5.如果 cnt 大于 k,则跳过当前循环。

6.否则,将 k 减去 cnt,并且通过位运算将 num 的第 i 位设置为 1。

7.如果 (i+1) 是 x 的倍数,则将 pre1 的值加 1。

8.循环结束后,返回 num - 1。

总的时间复杂度:O(log(k+1) * log((k+1)<<x)),其中 log(k+1) 是计算 (k+1) 的二进制表示的位数,log((k+1)<<x) 是计算 (k+1)<<x 的二进制表示的位数。

总的额外空间复杂度:O(1),只使用了常数级别的额外空间。

Go完整代码如下:

package mainimport ("fmt""math/bits"
)func findMaximumNumber(K int64, x int) int64 {k := int(K)num, pre1 := 0, 0for i := bits.Len(uint((k+1)<<x)) - 1; i >= 0; i-- {cnt := pre1<<i + i/x<<i>>1if cnt > k {continue}k -= cntnum |= 1 << iif (i+1)%x == 0 {pre1++}}return int64(num - 1)
}func main() {k := int64(9)x := 1result := findMaximumNumber(k, x)fmt.Println(result)
}

在这里插入图片描述

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

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

相关文章

通过大模型完成影视解说视频剪辑1.0

一. 概述 什么是自动化剪辑解说电影的 AI Agent? 自动化剪辑解说电影的 AI Agent 是一种利用大模型技术对电影进行自动化剪辑和解说的系统。这种 AI Agent 能够分析电影中的剧情、人物对话、场景变化等元素,自动生成解说词并进行剪辑,使得观众可以在更短的时间内了解电影的核…

Spring源码分析:List集合注入

pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0…

SD安装animatediff插件

在线地址 https://gitcode.net/ranting8323/sd-webui-animatediff 在线安装安装完重启 下载animatediff专用模型和8个镜头(可选) https://huggingface.co/guoyww/animatediff/tree/main启用 Animatediff公司电脑显卡不行,很多东西做不了。更多玩法可以去b站搜一下视频

人工智能-机器学习-逻辑回归

一、逻辑回归-预测考试通过1、导入模块 # 导入模块 import pandas as pd from matplotlib import pyplot as plt from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score ``## 2、读取数据```python # 读取数据(加载数据,加载后打…

【Linux命令学习】lsof查看打开的文件

lsof: list open files作用1:可查端口号被哪个进程占用 比如我们跑自动化,经常会遇到端口号被占用,无法启动driver lsof -i :8081lsof 输出的结果含义:fd:文件描述符的数字,通常是一个正整数。file descriptor type:文件描述符的类型,如 REG 表示普通文件,DIR 表示目…

ECU刷写流程之压缩刷写技术解析

背景在现代汽车电子技术中,ECU(电子控制单元)的软件升级是一项关键任务。为了提高数据传输的效率和安全性,压缩刷写技术应运而生。通过数据压缩传输,我们可以有效地增加带宽利用率,减少刷写工具与ECU之间的数据传输量,从而显著缩短ECU升级时间。此外,为了加强数据的安全…

利用深度循环神经网络对心电图降噪

具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI 我们提出了一种利用由长短期记忆 (LSTM) 单元构建的深度循环神经网络来降 噪心电图信号 (ECG) 的新方法。该网络使 用动态模型 ECG 生成的合成数据进行预训 练,并使用来自 Physionet PDB 心电图信 号数据库的真…