zoukankan      html  css  js  c++  java
  • LeetCode 483. Smallest Good Base

    题目描述:

    LeetCode 483. Smallest Good Base

    For an integer n, we call k>=2 a good base of n, if all digits of n base k are 1.

    Now given a string representing n, you should return the smallest good base of n in string format.

    Example 1:

    Input: "13"
    Output: "3"
    Explanation: 13 base 3 is 111.
    

    Example 2:

    Input: "4681"
    Output: "8"
    Explanation: 4681 base 8 is 11111.
    

    Example 3:

    Input: "1000000000000000000"
    Output: "999999999999999999"
    Explanation: 1000000000000000000 base 999999999999999999 is 11.
    

    Note:

    1. The range of n is [3, 10^18].
    2. The string representing n is always valid and will not have leading zeros.

    题目大意:

    给定整数n,如果n的k进制表示全部为1,则称k为n的一个“良好基数”(good base),其中k≥2

    给定字符串表示的n,以字符串形式返回n的最小的“良好基数”

    注意:

    1. n的取值范围是[3, 10^18]
    2. 字符串形式的n总是有效的并且不包含前导0

    解题思路:

    枚举法

    记k的最高次幂为m,从上界 int(log(n)) 向下界 1 递减枚举m
    
    问题转化为计算1 + k + k^2 + ... + k^m = n的正整数解
    
    由n > k^m得: k < n ** 1/m
    
    由n < (k + 1)^m得: k > n ** 1/m - 1,此处使用了二项式定理
    
    因此k可能的解为:int(n ** 1/m)
    
    最后验证1 + k + k^2 + ... + k^m 是否等于 n
  • 相关阅读:
    熟悉常用的Linux操作
    组合数据类型练习
    简易的词法分析程序
    大数据概述
    201552040205 关于对java的体验与感悟
    对已学习的java内容的一些感悟
    关于java中的一些小技巧
    Javase 大纲2
    Javase大纲
    MysQL知识整理
  • 原文地址:https://www.cnblogs.com/vectors07/p/7966343.html
Copyright © 2011-2022 走看看