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;
    }
};
相关推荐
steins_甲乙5 分钟前
从0做一个小型内存泄露检测器(2): elf文件的动态链接
c++
charlie11451419112 分钟前
通用GUI编程技术——图形渲染实战(二十八)——图像格式与编解码:PNG/JPEG全掌握
开发语言·c++·windows·学习·图形渲染·win32
Ricky_Theseus23 分钟前
C++静态库
开发语言·c++
_深海凉_24 分钟前
LeetCode热题100- 字母异位词分组
leetcode
洛水水26 分钟前
【力扣100题】14.两数相加
c++·算法·leetcode
AlanW27 分钟前
# Vcpkg使用总结2
c++
float_com29 分钟前
LeetCode80. 删除有序数组中的重复项 II
leetcode
pwn蒸鱼30 分钟前
leetcode:21. 合并两个有序链表
算法·leetcode·链表
洛水水31 分钟前
【力扣100题】15.删除链表的倒数第 N 个结点
算法·leetcode·链表
paeamecium40 分钟前
【PAT甲级真题】- Insert or Merge (25)
数据结构·c++·算法·排序算法·pat考试·pat