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;
    }
};
相关推荐
凉茶钱23 分钟前
多态:从虚函数语法到虚表寻址,一次讲透动态绑定
开发语言·c++·多态
Navigator_Z24 分钟前
LeetCode //C - 1311. Get Watched Videos by Your Friends
c语言·算法·leetcode
01二进制代码漫游日记43 分钟前
[C++]之内存管理(一)
jvm·c++·学习
codebolt1 小时前
C++程序crash分析和内存检测
开发语言·c++
ShineWinsu1 小时前
对于Qt:QLabel常见属性的解析
c++·qt·面试·笔试·gui·标签·qlabel
Pniubi1 小时前
力扣42接雨水(动态规划法)
算法·leetcode·职场和发展
zwc32104320552 小时前
Day 5:threshold与inRange阈值分割
c++·图像处理·人工智能·opencv·算法·计算机视觉
小徐不徐说2 小时前
数据库存储基础:理解表结构、主键、事务与 BLOB
开发语言·数据库·c++·qt·程序设计
Pniubi2 小时前
力扣46全排列(回溯(递归))
算法·leetcode·职场和发展
草莓熊Lotso2 小时前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生