leetCode 483. Smallest Good Base
2017-03-13 10:49
281 查看
1.题目
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.
The range of n is [3, 10^18].
Example 1:
Input: “13”
Output: “3”
Explanation: 13 base 3 is 111.
大意就是找出最小进制都是1的数,如一个10进制为13的数,他的3进制为111,
2.算法
这个题的意思是找到最小基数,那么所得到的全为1的个数肯定最长,我们先找一个比较长的全为1的数,来找一下基数,如果不行则去一个1,在找基数,直到找到为止。m 的取值范围是 [2, log(n, 2)]当m取定时,k的取值范围是public String smallestGoodBase(String n) { long i = Long.parseLong(n); int maxLong = (int)(Math.log(i) / Math.log(2) + 1); for (int j = maxLong; j >= 2; j--) { int k = find(i, j); if (k != 0) return k + ""; } return i - 1 + ""; } public int find(long i, int l) { int ll = 2; int lr = (int)Math.pow(i, 1.0/l); while (ll <= lr) { int mid = ll + (lr - ll) / 2; long sum = 0; int t = 1; for (int j = 0; j <= l; j++) { sum += t; t *= mid; } if (sum == i) return mid; else if (sum > i) lr = mid - 1; else ll = mid + 1; } return 0; }
此外还有各种数学方法
相关文章推荐
- LeetCode 483 Smallest Good Base 解题报告
- leetcode题解-483. Smallest Good Base
- LeetCode 483 Smallest Good Base 题解
- 483. Smallest Good Base
- [LeetCode] Smallest Good Base 最小的好基数
- LeetCode "483. Smallest Good Base" !!
- [Leetcode] 483. Smallest Good Base 解题报告
- leetcode483. Smallest Good Base 的一些思考
- leetcode 483. Smallest Good Base 最小基数使为1 + 二分查找
- Leetcode 230. Kth Smallest Element in a BST
- [Leetcode] Kth Smallest Element in a BST
- leetcode745: Find Smallest Letter Greater Than Target
- LeetCode 230: Kth Smallest Element in a BST
- LeetCode题解-230-Kth Smallest Element in a BST
- [leetcode] 230. Kth Smallest Element in a BST
- Find K Pairs with Smallest Sums -- LeetCode
- 【LeetCode】230.Kth Smallest Element in a BST(Medium)解题报告
- LeetCode Kth Smallest Element in a BST DFS
- LeetCode_504. Base 7
- Java for LeetCode 230 Kth Smallest Element in a BST