算法题:1的数目
2016-03-18 22:32
423 查看
给定一个十进制正整数N,写下从1开始,到N的所有正整数,然后数一下其中出现的所有“1”的个数。例如:N =12,我们会写下1,2,3,4,5,6,7,8,9,10,11,12。这样1出现的个数为5
java代码实现
256
从1开始,到N的所有整数,1出现的个数:156
java代码实现
public class demo1 { public static void main(String[] args) { Sum sum = new Sum(); System.out.println("请输入一个正整数N:"); int v = new Scanner(System.in).nextInt(); System.out.println("从1开始,到N的所有整数,1出现的个数:" + sum.sum1(v)); } } class Sum{ public int sum1(int n){ int count = 0; int factor =1; int lowerNum = 0; int currNum = 0; int higherNum = 0; while(n/factor !=0){ lowerNum = n-(n/factor)*factor; currNum = (n/factor)%10; higherNum = n/(factor*10); switch(currNum){ case 0: count +=higherNum*factor; break; case 1: count +=higherNum*factor+lowerNum+1; break; default: count +=(higherNum+1)*factor; break; } factor *=10; } return count; } }运行结果:请输入一个正整数N:
256
从1开始,到N的所有整数,1出现的个数:156
相关文章推荐
- c++面试题【转】
- 使用压测工具ab实现搭建的页面压测
- 树的完整实现--遍历--应用
- Vmware vSphere 6.0之ESXI安装配置
- Android使用sd卡保存读取数据
- 151. Reverse Words in a String
- Boost环境配置及遇到的问题解决方案
- openwrt 显示系统版本和GCC的版本
- (整理)SQL server 2012 中文乱码与5030错误
- << >>
- 11. 接口和抽象类区别
- bzoj 2005: [Noi2010]能量采集
- <我的C++程序>简单的学生信息管理系统
- 最长上升子序列、最长公共上升子序列
- Linux系统程序包管理工具 RPM
- 2016蓝桥杯假期任务之《打印十字图》
- android学习——activity实现动画切换
- 顺序表(C语言)
- C#高级编程 (第六版) 学习 第七章:委托和事件
- web服务文件更新自动同步、数据库主从复制、shell脚本实现网站代码备份和mysql备份