博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找1到n所有整数出现1的个数
阅读量:7082 次
发布时间:2019-06-28

本文共 1381 字,大约阅读时间需要 4 分钟。

编程之美2.4

n=12时,1,11,12这3个数包含1,所以1的个数是5.

Line 9是为了防止factor溢出。

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 int countOne(int n) { 7 int ans = 0; 8 int factor = 1; 9 while (n / factor >= 10) { // avoid overflow10 int high = n / factor / 10;11 int low = n % factor;12 int current = (n / factor) % 10;13 if (current == 0) {14 ans += high * factor;15 } else if (current == 1) {16 ans += high * factor + low + 1;17 } else {18 ans += (high + 1) * factor;19 }20 factor *= 10;21 }22 if (n / factor == 1) ans += (n % factor) + 1;23 else if (n / factor != 0) ans += factor;24 return ans;25 }26 27 int bruteForce(int n) {28 int ans = 0;29 for (int i = 1; i <= n; ++i) {30 int tmp = i;31 while (tmp) {32 if (tmp % 10 == 1) ans++;33 tmp /= 10;34 }35 }36 return ans;37 }38 39 int main() {40 srand(time(NULL));41 42 for (int i = 0; i < 100; ++i) {43 int n = rand() % 9999999;44 int c1 = countOne(n);45 int c2 = bruteForce(n);46 if (c1 != c2) {47 cout << c1 << " " << c2 << " " << n << endl;48 }49 }50 return 0;51 }

 

转载于:https://www.cnblogs.com/linyx/p/4001128.html

你可能感兴趣的文章
W3C批准WebAuth作为无密码登录的Web标准
查看>>
干货来袭丨资产可用性真的是终极目标吗?
查看>>
Numpy常用属性及方法
查看>>
惊天消息!美国重启病毒实验,或对人类造成巨大威胁
查看>>
一条SQL完成跨数据库实例Join查询
查看>>
BZOJ 1266 [AHOI2006]上学路线route
查看>>
名词小结:base href、GreaseMonkey、Varchar、char、网速的计算
查看>>
数据结构
查看>>
hadoop3.x的安装
查看>>
03 EM算法 - EM算法流程和直观案例
查看>>
使用uwolfer gerrit-rest-java-client获取Gerrit信息
查看>>
五分钟读懂UML类图
查看>>
中科创达副总裁孙力:AI视觉仍在路上,平台需求胜过算法
查看>>
Javascript基础之-Promise
查看>>
报名 | 清华方圆系列之大数据分析与可视化报告会将于下周举办
查看>>
react学习系列4 组件生命周期
查看>>
了解 php.ini
查看>>
异地容灾方案解析
查看>>
深入理解Vue的生命周期
查看>>
WPF's Style BasedOn
查看>>