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 分钟前
GESP6级C++考试语法知识(十五、数据结构(一、认识栈 Stack))
c++··gesp6级·gesp六级·数组模拟栈
拂拉氏9 分钟前
【知识讲解-题目讲解】:二叉树的前、中、后序遍历的三种实现(递归,非递归,Morris遍历)与二叉树oj题讲解(二叉树最近公共祖先,二叉树展开为链表)
数据结构·算法·leetcode·二叉树·遍历
方便面不加香菜12 分钟前
C++ 日期类的实现
开发语言·c++
小米渣的逆袭22 分钟前
C++面试题整理
c++·面试
code monkey.25 分钟前
【Linux之旅】Linux 线程同步与互斥实战:从锁机制到生产消费模型全指南
linux·c++·线程·同步·互斥
我能坚持多久29 分钟前
STL详解——list的模拟实现
c++·windows·list
雪度娃娃32 分钟前
行为型设计模式——命令模式
c++·设计模式·命令模式
我能坚持多久33 分钟前
STL详解——list的介绍以及功能展示
开发语言·c++
大大杰哥34 分钟前
2026陕西省ICPC省赛补题(前六题)
c++·算法
Brilliantwxx36 分钟前
【C++】 继承与多态(上)
开发语言·c++·笔记·算法