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;
    }
};
相关推荐
王老师青少年编程7 分钟前
csp信奥赛C++高频考点专项训练之前缀和&差分 --【一维前缀和】:宝石串
c++·前缀和·csp·高频考点·信奥赛·宝石串
梓䈑8 分钟前
【算法题攻略】模拟
c++·算法
vKd0Ff21L15 分钟前
如何在Dev-C++中设置TDM-GCC为默认编译器第九十一篇
java·jvm·c++
cany100023 分钟前
C++ -- 型号比对和constexpr
c++
楼田莉子23 分钟前
C++17新特性:结构化绑定/inline变量/if相关的变化
c++·后端·学习
翎沣29 分钟前
C++面向对象三大特性
开发语言·c++
吃着火锅x唱着歌29 分钟前
LeetCode 962.最大宽度坡
算法·leetcode·职场和发展
无限进步_40 分钟前
【C++】C++11的类功能增强与STL变化
java·前端·数据结构·c++·后端·算法
凌波粒1 小时前
LeetCode--257. 二叉树的所有路径(二叉树)
算法·leetcode·职场和发展
小鱼️遨游1 小时前
openCPU SDK 安装和第一次编译方法、注意事项
c++·opencpu·ml307