2021-06-18 16:00:46 +08:00
|
|
|
|
//对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制。
|
|
|
|
|
//
|
|
|
|
|
// 以字符串的形式给出 n, 以字符串的形式返回 n 的最小好进制。
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// 示例 1:
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
//输入:"13"
|
|
|
|
|
//输出:"3"
|
|
|
|
|
//解释:13 的 3 进制是 111。
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// 示例 2:
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
//输入:"4681"
|
|
|
|
|
//输出:"8"
|
|
|
|
|
//解释:4681 的 8 进制是 11111。
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// 示例 3:
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
//输入:"1000000000000000000"
|
|
|
|
|
//输出:"999999999999999999"
|
|
|
|
|
//解释:1000000000000000000 的 999999999999999999 进制是 11。
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// 提示:
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// n的取值范围是 [3, 10^18]。
|
|
|
|
|
// 输入总是有效且没有前导 0。
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// Related Topics 数学 二分查找
|
|
|
|
|
// 👍 71 👎 0
|
|
|
|
|
|
|
|
|
|
package leetcode.editor.cn;
|
|
|
|
|
|
|
|
|
|
//483:最小好进制
|
|
|
|
|
public class SmallestGoodBase {
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
//测试代码
|
|
|
|
|
Solution solution = new SmallestGoodBase().new Solution();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//力扣代码
|
|
|
|
|
//leetcode submit region begin(Prohibit modification and deletion)
|
|
|
|
|
class Solution {
|
|
|
|
|
public String smallestGoodBase(String n) {
|
|
|
|
|
long num = Long.parseLong(n);
|
2021-10-18 16:30:11 +08:00
|
|
|
|
int mMax = (int) Math.floor(Math.log(num) / Math.log(2));
|
|
|
|
|
for (int m = mMax; m > 1; m--) {
|
|
|
|
|
int k = (int) Math.pow(num, 1.0 / m);
|
|
|
|
|
long mul = 1, sum = 1;
|
|
|
|
|
for (int i = 0; i < m; i++) {
|
|
|
|
|
mul *= k;
|
|
|
|
|
sum += mul;
|
2021-06-18 16:00:46 +08:00
|
|
|
|
}
|
2021-10-18 16:30:11 +08:00
|
|
|
|
if (sum == num) {
|
|
|
|
|
return Integer.toString(k);
|
2021-06-18 16:00:46 +08:00
|
|
|
|
}
|
2021-10-18 16:30:11 +08:00
|
|
|
|
}
|
|
|
|
|
return Long.toString(num - 1);
|
2021-06-18 16:00:46 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//leetcode submit region end(Prohibit modification and deletion)
|
|
|
|
|
|
|
|
|
|
}
|