Algorithm - 1到n中1出现的次数
来源:互联网 发布:阿里云金牌服务商 编辑:程序博客网 时间:2024/05/17 07:53
1. 示例程序:
int count_of_1(unsigned int n){ /* 参数检查 */ if (0 == n) { return 0; } /* 计算1到n中1出现的次数 */ int count = 0; // 总个数 unsigned int factor = 1; // 因子 unsigned int lower_num = 0; // 后缀数 unsigned int curr_num = 0; // factor位数字,个位数字、十位数字、百位数字等 unsigned int higher_num = 0; // 前缀数 /* 依次循环求各位上出现1的次数 */ while (n / factor != 0) { lower_num = n % factor; // 求后缀数 curr_num = (n / factor) % 10; // 求factor位数字 higher_num = n / (factor * 10); // 求前缀数 switch (curr_num) { case 0: /* factor位为0,此位出现1的个数为前缀数乘以因子 */ count += higher_num * factor; break; case 1: /* factor位为1,此位出现1的个数为前缀数乘以因子,再加上后缀数加1 */ count += higher_num * factor + lower_num + 1; break; default: /* factor位大于1,此位出现1的个数为前缀数加1后乘以因子 */ count += (higher_num + 1) * factor; break; } /* 因子依次为:1, 10, 100, 1000, 10000, ... */ factor *= 10; } // end of while return count;} // end
2. 注解:
factor:因子,比如1、10、100、1000等;
lower_num:后缀数;
curr_num:factor位数字,比如:个位数字、十位数字、百位数字等;
higher_num:前缀数;
举例:12345
对于factor=100,则curr_num为3,lower_num为45,higher_num为12;
- Algorithm - 1到n中1出现的次数
- 1到n的正数中1出现的次数
- 整数中1出现的次数(从1到n整数中1出现的次数)
- 整数中1出现的次数(从1到n中出现的次数)
- 从1到N正数中1出现的次数
- 1到n中1出现的次数
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- 计算从1到N中,1出现的次数
- 从1到n整数中1出现的次数
- 计算从1到N中1的出现次数
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- 1到n中1出现的次数
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- 总结与反思
- 《成为企业最受欢迎的人》
- HDU 3234 Exclusive-OR(并查集)
- sudo apt-get update更新源失败
- 创建过程删除大量数据的方法
- Algorithm - 1到n中1出现的次数
- JAVA内存溢出解决方案总结
- android 设置图片透明
- jsp中分页显示的实现
- 压缩、解压文件工具类
- 伤感空间日志发布:永远不变最终还是会变
- MFC常用函数整理
- SQL 查询某属性分类数据和
- 用纯css实现的html5 logo标志