首页 > 其他分享 >2022-01-30:最小好进制。 对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制。 以字符串的形式给出 n, 以字符串的形式返回 n 的

2022-01-30:最小好进制。 对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制。 以字符串的形式给出 n, 以字符串的形式返回 n 的

时间:2023-05-12 10:32:30浏览次数:49  
标签:01 进制 复杂度 strconv logn nVal 字符串


2022-01-30:最小好进制。
对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制。
以字符串的形式给出 n, 以字符串的形式返回 n 的最小好进制。
输入:“4681”
输出:“8”
解释:4681 的 8 进制是 11111。
提示:
n的取值范围是 [3, 10^18]。
输入总是有效且没有前导 0。
力扣483。

答案2022-01-30:

数学法。
时间复杂度:O(logn*logn)。至多需要进行 O(logn) 次检查,每次检查的时间复杂度为 O(logn)。
空间复杂度:O(1。只需要常数的空间保存若干变量。

代码用golang编写。代码如下:

package main

import (
    "fmt"
    "math"
    "math/bits"
    "strconv"
)

func main() {
    ret := smallestGoodBase("4681")
    fmt.Println(ret)
}

func smallestGoodBase(n string) string {
    nVal, _ := strconv.Atoi(n)
    mMax := bits.Len(uint(nVal)) - 1
    for m := mMax; m > 1; m-- {
        k := int(math.Pow(float64(nVal), 1/float64(m)))
        mul, sum := 1, 1
        for i := 0; i < m; i++ {
            mul *= k
            sum += mul
        }
        if sum == nVal {
            return strconv.Itoa(k)
        }
    }
    return strconv.Itoa(nVal - 1)
}

执行结果如下:

2022-01-30:最小好进制。 对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制。 以字符串的形式给出 n, 以字符串的形式返回 n 的_golang


左神java代码

力扣483


标签:01,进制,复杂度,strconv,logn,nVal,字符串
From: https://blog.51cto.com/u_14891145/6269415

相关文章

  • 2022-02-21:不含连续1的非负整数。 给定一个正整数 n ,返回范围在 [0, n] 都非负整数中,
    2022-02-21:不含连续1的非负整数。给定一个正整数n,返回范围在[0,n]都非负整数中,其二进制表示不包含连续的1的个数。输入:n=5输出:5解释:下面是带有相应二进制表示的非负整数<=5:0:01:12:103:114:1005:101其中,只有整数3违反规则(有两个连续的1),其......
  • Delphi 字符串拆分/分割[1] - TStringList
    1、TStringList默认以','拆分字符onstconstr:String='aaa,bbb,ccc,ddd';varstrs:TStrings;i:Integer;beginstrs:=TStringList.Create;strs.CommaText:=constr;fori:=0toStrs.Count-1doShowMessage(Strs[i]);//aaabbbcccd......
  • oracle报错:ORA-01034错误:oracle not available 播报文章
    1、ORA-01034错误:oraclenotavailable https://jingyan.baidu.com/article/d8072ac4a016c5ec94cefd72.html 首先先先测试一下,监听是否启动:lsnrctlstatus;如果监听没有启动,则如果监听没起lsnrctlstar,监听启动要将近1分钟的时间。 2连接数据库:connect ......
  • Python学习之三: 编译二进制
    Python学习之三:编译二进制摘要每次使用python执行py文件其实是比较麻烦的主要是还得安装python的虚拟机,以及安装对应的pip包.感觉比较繁杂理论上最快捷的方式是编译成二进制直接运行.所以这里主要是说一下通过pycharm和linux机器进行二进制编译的过程Pycharm的安......
  • ORA-01172 ORA-01151 故障恢复---惜分飞
    联系:手机/微信(+8617813235971)QQ(107644445)标题:ORA-01172ORA-01151故障恢复作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]节点2报Error:Controlfilesequencenumberinfileheaderisdifferentfromtheoneinmemory,导......
  • 2023-05-11:给你一个 m x n 的二进制矩阵 grid, 每个格子要么为 0 (空)要么为 1 (被占据), 给
    2023-05-11:给你一个mxn的二进制矩阵grid,每个格子要么为0(空)要么为1(被占据),给你邮票的尺寸为stampHeightxstampWidth。我们想将邮票贴进二进制矩阵中,且满足以下限制和要求:覆盖所有空格子,不覆盖任何被占据的格子,可以放入任意数目的邮票,邮票可以相互有重叠部分,邮......
  • Why are Python strings immutable? 字符串是否可以改变
    实践1、pythons="abc"s+="34" #OK print(s)s[0]="k" # TypeError:'str'objectdoesnotsupportitemassignment   golang  s:="abc"  s+="456"  fmt.Println(s)  s[0]="......
  • 1015.可被K整除的最小整数--中等
    题目描述给定正整数k ,你需要找出可以被k 整除的、仅包含数字1的最小正整数n 的长度。返回n 的长度。如果不存在这样的n ,就返回-1。注意:n 不符合64位带符号整数。示例1:输入:k=1输出:1解释:最小的答案是n=1,其长度为1。示例2:输入:k=2输出:-1解释:不存在......
  • 1016. 子串能表示从 1 到 N 数字的二进制串
    题目链接:1016.子串能表示从1到N数字的二进制串方法:思维解题思路 由题目可知,字符串\(s\)的最大长度为\(1000\),那么其最多能表示的不同的二进制数不超过\(1000\)个。因此当\(n>1000\)时,直接返回\(false\);否则遍历\([1,n]\)判断是否符合题意。代码classSolu......
  • 打开PDB报错ORA-30013
    多租户架构,之前还在做运维的时期接触也不多。遇到多租户问题,第一反应是有些发虚的。但实际很多问题很简单,也容易解决。本文就是一个例子。问题:RAC节点2打开所有PDB时,报错ORA-30013。SQL>alterpluggabledatabaseallopen;alterpluggabledatabaseallopen*ERRORatlin......