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;
    }
};
相关推荐
unicrom_深圳市由你创科技6 小时前
哪些控制逻辑应该放在 PLC,哪些放在上位机?
c++
玖玥拾8 小时前
C/C++ 基础笔记(十三)继承
c语言·c++·继承
ao-weilai9 小时前
C++:哈希表
c++·哈希算法·散列表
汉克老师9 小时前
GESP7级C++考试语法知识(二、指数函数(1、pow() 函数)
c++·指数函数·pow·gesp7级·精度误差
退休倒计时9 小时前
【每日一题】LeetCode 53. 最大子数组和 TypeScript
数据结构·算法·leetcode·typescript
旖-旎9 小时前
FloodFill(图像渲染)(1)
c++·算法·深度优先·力扣
汉克老师10 小时前
GESP2026年3月认证C++六级真题与解析(编程题1 选数)
c++·动态规划·线性dp·gesp六级·状态转移·选与不选
有点。10 小时前
C++倍增法(练习题)
c++·算法
凡人叶枫10 小时前
Effective C++ 条款23:宁以 non-member、non-friend 替换 member 函数
linux·开发语言·c++·嵌入式开发
C语言小火车11 小时前
什么时候用智能指针?什么时候用裸指针?
c语言·c++·学习·指针