LeetCode 483. Smallest Good Base
Posted vectors07
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:
- The range of n is [3, 10^18].
- 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的最小的“良好基数”
注意:
- n的取值范围是[3, 10^18]
- 字符串形式的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
以上是关于LeetCode 483. Smallest Good Base的主要内容,如果未能解决你的问题,请参考以下文章
908. Smallest Range I - LeetCode
Leetcode 230. Kth Smallest Element in a BST
Leetcode 230. Kth Smallest Element in a BST
LeetCode Find K Pairs with Smallest Sums