leetcode 483. 最小好进制

题目:483. 最小好进制 - 力扣(LeetCode)

用二进制计算位数最长是多少,然后从大到小遍历可能的位数,二分查找"进制数"即可。

cpp 复制代码
class Solution {
public:
    string smallestGoodBase(string n_str) {
        uint64_t n = 0;
        for (int i = 0; i < n_str.length(); i++) {
            n = n * 10 + n_str[i] - '0';
        }
        int max = 1;
        uint64_t t = 2;
        while (t <= n / 2) {
            ++max;
            t *= 2;
        }
        ++max;
        uint64_t ret = n - 1;
        uint64_t l, r, m;
        uint64_t a;
        bool invalid;
        for (int i = max; i > 1; i--) {
            l = 2;
            r = n / i;
            while (l <= r) {
                m = (l + r) / 2;
                t = 1;
                a = 1;
                invalid = false;
                for (int j = 0; j < i; j++) {
                    if (a <= (n - t) / m) {
                        a *= m;
                        t += a;
                    } else {
                        invalid = true;
                        break;
                    }
                }
                if (!invalid && t == n) {
                    ret = m;
                    break;
                }
                if (invalid) {
                    r = m - 1;
                } else {
                    l = m + 1;
                }
            }
            if (ret != n - 1) {
                break;
            }
        }
        
        return to_string(ret);
    }
};
相关推荐
YuTaoShao2 小时前
【LeetCode 每日一题】3634. 使数组平衡的最少移除数目——(解法一)排序+滑动窗口
算法·leetcode·排序算法
TracyCoder1234 小时前
LeetCode Hot100(27/100)——94. 二叉树的中序遍历
算法·leetcode
草履虫建模11 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
VT.馒头15 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
不穿格子的程序员19 小时前
从零开始写算法——普通数组篇:缺失的第一个正数
算法·leetcode·哈希算法
VT.馒头1 天前
【力扣】2722. 根据 ID 合并两个数组
javascript·算法·leetcode·职场和发展·typescript
执着2591 天前
力扣hot100 - 108、将有序数组转换为二叉搜索树
算法·leetcode·职场和发展
52Hz1181 天前
力扣230.二叉搜索树中第k小的元素、199.二叉树的右视图、114.二叉树展开为链表
python·算法·leetcode
苦藤新鸡1 天前
56.组合总数
数据结构·算法·leetcode
菜鸟233号1 天前
力扣647 回文子串 java实现
java·数据结构·leetcode·动态规划