网站首页 > 资源文章 正文
2022-03-23:在k进制下,最小多小的num,可以让1~num范围的数拥有1的个数不少于n个?
腾讯音乐2022校园招聘。
答案2022-03-23:
二分法。
代码用golang编写。代码如下:
package main
import "fmt"
func main() {
ret := minM(5, 2)
fmt.Println(ret)
}
func minM(n, k int) int {
len0 := bits(n, k)
l := 1
r := power(k, len0+1)
ans := r
for l <= r {
m := l + ((r - l) >> 1)
if ones(m, k) >= n {
ans = m
r = m - 1
} else {
l = m + 1
}
}
return ans
}
func bits(num, k int) int {
len0 := 0
for num != 0 {
len0++
num /= k
}
return len0
}
func power(base, power int) int {
ans := 1
for power != 0 {
if (power & 1) != 0 {
ans *= base
}
base *= base
power >>= 1
}
return ans
}
func ones(num, k int) int {
len0 := bits(num, k)
if len0 <= 1 {
return len0
}
offset := power(k, len0-1)
first := num / offset
curOne := num%offset + 1
if first != 1 {
curOne = offset
}
restOne := first * (len0 - 1) * (offset / k)
return curOne + restOne + ones(num%offset, k)
}
执行结果如下:
***
[左神java代码](https://github.com/algorithmzuo/weekly-problems/blob/main/src/class_2021_12_3_week/Code03_OneCountsInKSystem.java)
猜你喜欢
- 2024-10-07 泰星Num被卷风波,事后澄清纯属媒体造谣
- 2024-10-07 你告我,我告你!泰星Num与Namfon都声称要起诉对方上法庭
- 2024-10-07 电脑键盘numlock键失灵无法输入数字的解决方法
- 2024-10-07 键盘上的数字小键盘无法使用怎么办?NumLock没反应怎么解决
- 2024-10-07 宋宝华:为什么numactl内存绑定对代码段不起作用
- 2024-10-07 Excel函数公式:你真的了解INDEX函数吗(一)?
- 2024-10-07 为什么键盘有一横排0~9数字按键,又特意做了一个NumPad区域?
- 2024-10-07 泰星Num事业家庭两不误,还想再要个孩子
- 2024-10-07 Excel中有11个IS判断函数,全部知道的不多,全部会用的很少
- 2024-10-07 如何修复#NUM! Excel 中的错误(excel中出现错误)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)