妙妙屋-求小于n的所有正整数中1的个数
程序员文章站
2022-05-31 17:29:44
...
int countDigitOne(int n) {
int ones = 0;
for (long long m = 1; m <= n; m *= 10) {
ones += (n / m + 8) / 10 * m + (n / m % 10 == 1) * (n%m + 1);
//其实原公式为: ones += [(n / m + 8) / 10 * m - ones] + [((n / m % 10 == 1) * (n%m + 1)) + ones]
//意思就是每次统计高一位为1的情况加上当本位为1时的特殊情况
}
return ones;
}
上一篇: jwt:继承springboot实现登录
下一篇: 计算平均值防止溢出的方法
推荐阅读
-
牛客网 - 求int型正整数在内存中存储时1的个数
-
【华为机试】求int型正整数在内存中存储时1的个数
-
华为机试 — 求 int 型正整数在内存中存储时1的个数
-
华为-求int型正整数在内存中存储时1的个数
-
【华为机试】求int型正整数在内存中存储时1的个数
-
求int型正整数在内存中存储时1的个数
-
初学python杂记--求int型正整数在内存中存储时1的个数
-
求int型正整数在内存中存储时1的个数
-
14 求int型正整数在内存中存储时1的个数
-
第一行包含一个正整数n,表示老师给出的序列有n个数,接下来有n行,每行一个正整数k,为序列中每一个元素的值。(1 ≤ n ≤ 105,1 ≤ k ≤ n) 输出一行,为去重排序后的序列