C++ | Leetcode C++题解之第233题数字1的个数

题目:

题解:

cpp 复制代码
class Solution {
public:
    int countDigitOne(int n) {
        // mulk 表示 10^k
        // 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)
        // 但为了让代码看起来更加直观,这里保留了 k
        long long mulk = 1;
        int ans = 0;
        for (int k = 0; n >= mulk; ++k) {
            ans += (n / (mulk * 10)) * mulk + min(max(n % (mulk * 10) - mulk + 1, 0LL), mulk);
            mulk *= 10;
        }
        return ans;
    }
};
相关推荐
superior tigre1 分钟前
45 跳跃游戏2
算法·leetcode·游戏
盐焗鹌鹑蛋5 分钟前
【C++】vector类
c++
jf加菲猫20 分钟前
第15章 文件和目录
开发语言·c++·qt·ui
思麟呀25 分钟前
Select多路转接
linux·网络·c++·网络协议·http
aq553560037 分钟前
开源吐槽大会:让技术痛点变笑点
c++·mfc
田梓燊40 分钟前
力扣:138.随机链表的复制
算法·leetcode·链表
t***5441 小时前
如何在 Dev-C++ 中切换编译器至 Clang
开发语言·c++
王老师青少年编程1 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【区间贪心】:线段覆盖
c++·算法·贪心·csp·信奥赛·区间贪心·线段覆盖
CoderCodingNo1 小时前
【信奥业余科普】C++ 的奇妙之旅 | 14:程序的分叉路口——逻辑判断与 if-else 语句
开发语言·c++
The Chosen One9851 小时前
a进制转b进制的转换总结
开发语言·c++