1到n的整数中,1出现的次数
参考链接:https://discuss.leetcode.com/topic/18054/4-lines-o-log-n-c-java-python
1到n的整数中,1出现的次数,如11中,1出现了两次,并不是求包含1的数的个数
找规律:
假设n为六位数 abcdef.
求个位(f所在位)为1的数的个数C1:
将n分为两部分:
P = n / 1 = abcdef
Q = n % 1 = 0
对P,如果f > 1,则f的前缀从0~abcde,共(abcde+1)个
如果f == 1,则f的前缀从0~abcde-1, ,共(abcde)个
当前缀为abcde时,f为1,即以abcde为前缀的数,对于前缀,abcde,对应的数为:abcdef,C1共(abcde * 1 ) + (Q+1) 个,共(abcde+1)个
如果f == 0,则f的前缀从0~abcde-1,共(abcde)个
求十位(e所在位)为1的数的个数C10:
将n分为两部分:
P = n / 10 = abcde
Q = n % 10 = f
对P,如果e > 1,则e的前缀从0~abcd,对于每一个前缀,a'b'c'd',它对应着十个数:a'b'c'd'1f'(f'从0到9),C10共( abcd +1 ) * 10个
如果e == 1,则e的前缀从0~abcd-1,对于每一个前缀,a'b'c'd',它对应着十个数:a'b'c'd'1f'(f'从0到9)
当前缀为abcd时,e为1,即以abcde为前缀的数,对于前缀,abcde,对应的数为:abcdef'(f'从0到f),C10共(abcd * 10 ) + (Q+1) 个
如果e == 0,则e的前缀从0~abcd-1,对于每一个前缀,a'b'c'd',它对应着十个数:a'b'c'd'1f'(f'从0到9)
当前缀为abcd时,e为0,没有十位为1的数,C10共(abcd * 10 )个
求百位(d所在位)为1的数的个数C100:
将n分为两部分:
P = n / 100 = abcd
Q = n % 100 = ef
对P,如果d > 1,则d的前缀从0~abc,对于每一个前缀,a'b'c',它对应着一百个数:a'b'c'1e'f'(e'f'从00到99),C100共(abc+1) * 100个
如果d == 1,则d的前缀从0~abc-1,对于每一个前缀,a'b'c',它对应着一百个数:a'b'c'1e'f'(e'f'从00到99)
当前缀为abc时,d为1,即以abcd为前缀的数,对于前缀,abcd,对应的数为:abcde'f'(e'f'从00到ef),C10共(abc * 100 ) + (Q+1) 个
如果d == 0,则d的前缀从0~abc-1,对于每一个前缀,a'b'c',它对应着一百个数:a'b'c'1e'f'(e'f'从00到99)
当前缀为abc时,d为0,没有百位为1的数,C100共(abc * 100 )个
。。。。。。
设P = abcd
当d==0时,( P + 8 )/ 10 = abc
当d==1时,( P + 8 )/ 10 = abc
当d>1时,( P + 8 )/ 10 = abc+1
代码如下:
void countOne( int n )
{
int cnt = ;
for( int m = ; m <= n; m *= )
{
int a = n / m;
int b = n % m;
cnt += ( ( a + ) / ) * m;
if( a % == )
{
cnt += ( b+ );
}
}
return cnt;
}
3出现的次数也采用同样的办法:
int countT( int n )
{
int cnt = ;
for( int m = ; m <= n; m *= )
{
int a = n / m;
int b = n % m;
cnt += ( ( a + ) / ) * m;
if( a % == )
{
cnt += ( b+ );
}
}
return cnt;
}
1到n的整数中,1出现的次数的更多相关文章
- 整数中1出现的次数(从1到n整数中1出现的次数)
题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.AC ...
- 剑指Offer:面试题32——从1到n整数中1出现的次数(java实现)
问题描述: 输入一个整数n,求1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11,12,1一共出现了5次. 思路:(不考虑时间效率的解法,肯定不 ...
- 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
题目1373:整数中1出现的次数(从1到n整数中1出现的次数) 题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他 ...
- 剑指Offer 整数中1出现的次数(从1到n整数中1出现的次数)
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...
- 1049. Counting Ones/整数中1出现的次数(从1到n整数中1出现的次数)
The task is simple: given any positive integer N, you are supposed to count the total number of 1's ...
- 【面试题032】从1到n整数中1出现的次数
[面试题032]从1到n整数中1出现的次数 题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数. 例如输入12,从1到12这些整数中包含1的数字有1,10,11和1 ...
- 九度OJ 1373 整数中1出现的次数(从1到n整数中1出现的次数)
题目地址:http://ac.jobdu.com/problem.php?pid=1373 题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU ...
- 【剑指offer】面试题32:从1到n整数中1出现的次数
题目: 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.A ...
- 时间效率:整数中1出现的次数(从1到n整数中1出现的次数)
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer ...
- 整数中1出现的次数(从1到n的整数中1出现的次数)
题目 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.AC ...
随机推荐
- java.util.Arrays$ArrayList addAll报错
执行下面代码时报错: List<String> centerList = WebConstants.SUPPORT_BIG_CENTERS_LIST; // WebConstants.SU ...
- jenkins+docker+docker-compose完整发版流程
首先搭建jenkins+maven+nexus这一套自动化打包工具,并配置好相应配置,这里就不再赘述了. 其次,搭建好docker集群和私有仓库,以及安装好docker-compose工具,配置好相应 ...
- qurtz.net(转载)
Quartz+TopShelf实现Windows服务作业调度 Quartz:首先我贴出来了两段代码(下方),可以看出,首先会根据配置文件(quartz.config),包装出一个Quartz.Co ...
- 生产者消费者 wait()。 notify()
public class ThreadDemo3 { public static void main(String[] args){ MyList list = new MyList(); Produ ...
- asp.net控件中的reportview不显示
如果reportview在asp.net中,图标出不来,打X 1.安装reportview控件(在装有vs2010中的电脑中搜,不要去下载,下载可能会出错) 2.如果是iis7以上版本,web.con ...
- idea 新写的jsp没有找到
- Numpy知识(一)
先了解ndarray(一个多维数组)的生成. 第一种生成方法就是np.random.randn(n,m),这回生成一个形状是n*m的ndarray.如下图. 第二种生成方法:传入一个列表listDem ...
- openlayers/// Puppeteer.js
1.定位;https://viglino.github.io/ol3-ext/examples/map.interaction.geolocationdraw.html 2 .添加Overlay d ...
- 《java与模式》阅读笔记01
这次我读了前两章的内容,就如书名所言,这本书主要将的就是java中的模式,在书中的序言就把所有的模式都介绍了一下,主要有, 1.创建模式:简单工厂模式,工厂方法模式,抽象工厂模式,建造模式 2.行为模 ...
- Spring启动异常: cvc-elt.1: Cannot find the declaration of element 'beans'(转)
Spring启动异常: cvc-elt.1: Cannot find the declaration of element 'beans' 2008-09-07 22:41 今天把在线聊天室代码改了下 ...