十进制中正整数N中1的个数(2)
上面的那种各个数据进行遍历的方法,耗时,
我们可以通过根据数的规律进行观察是否存在某种规律:
当N是1位数的情况:
如果N=3,那么从1到3的所有数字总,1,2,3,只有你个位数字的出现的个数是1,
当N=9时,出现1的个数也是1个。
当N是两位数的时候:
当是两位数的时候,个位和十位上都可能出现1,我们分开考虑,
当N=33时,所有数中个位出现1的个数是4,在十位上出现1的个数是10,总数是14
当N=55式,个位数上出现1的个数是6,十位上出现1的个数是10,总数是16
sum(19)=个位出现的个数+十位出现的个数=2+10=12
sum(29)=个位出现的个数+十位出现的个数=3+10=13
sum(39)=个位出现的个数+十位出现的个数=4+10=14
。。。。。。。。。。。。。。
sum(99)=个位出现的个数+十位出现的个数=10+10=20
当N是三位数的时候:
分别统计百位、十位‘个位上1的个数
9以下: 1个
99以下: 1*10+10*1=20个
999以下: 100*1+10*20=300个
9999以下: 1*1000+10*30=4000个
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
9999999999以下: 9000000个
999999999999以下: 100000000个
当n增加10,至少增加1个1
当n增加100,至少增加20个1
当n增加1000,至少增加300个1
当n增加10^k,时,至少增加k*10^k-1个1
代码:
int coutinter(int n)
{int count = 0;int ifactor = 1;int islower = 0;int icurrnum = 0;int ihigh = 0;while (n / ifactor != 0){islower = n - (n / ifactor)*ifactor;icurrnum = (n / ifactor) % 10;ihigh = n / (ifactor * 10);switch (icurrnum){case 0:count += ihigh*ifactor;break;case 1:count += ihigh*ifactor + islower + 1;break;default:count += (ihigh + 1)*ifactor;break;}ifactor *= 10;}
}
十进制中正整数N中1的个数(2)相关推荐
- 十进制中正整数N中1的个数
问题: 给定一个十进制正整数N,写下从一开始到N过程中所有1的个数? 例如: N=2,写下1,2,出现了1个1 N=12,写下1,2,3,4,5,6,7,8,9,10,1,1,12,这里面1的个数是5 ...
- (C语言)素数是指大于1,且只能被1和它自身整除的正整数。现给定一个范围,请输出在此范围中素数的个数。
题目描述: 素数是指大于1,且只能被1和它自身整除的正整数.现给定一个范围,请输出在此范围中素数的个数. 输入: 测试数据有多组,每组单独占一行,包括两个正整数m和n(2≤m,n≤10000),中间用 ...
- 斐波那契数列_菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。
描述 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和.给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少. 格式 输入格式 第1行是测 ...
- 题目42:菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。
题目转载:http://python.wzms.com/s/1/35 题目描述: 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和. 给出一个正整数k,要求 ...
- 编程之美读书笔记2.1—求二进制数中1的个数
解法一: 可以举一个8位二进制的例子.对于二进制操纵,我们除以一个2,原来数字就会减少一个0(向右移一位).如果除的过程中有余,那么久表示当前位置有一个1. 以10100010为例: 第一次除以2时, ...
- 求数组最大数,该数为数组中某两个数相加
题目: 百度笔试:在一个正整数集合S中,找出一个最大数C,使得C=A+B,其中A和B也是S种的元素. 思想: 首先,我们将数组从小到大进行快速排序.其次: 1.将最后一个数设为最大数设定为S: 2.用 ...
- 检测数(二进制形式)中1的个数
2019独角兽企业重金招聘Python工程师标准>>> 规律:二进制中1的个数,比如100(对应十进制的4)求它中1的个数就 100 & (100-001)就行 packag ...
- 题库练习5(句子逆序、字符串排序、int型二进制表示中1的个数、购物单)
1. 句子逆序 将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为"boy a am I".所有单词之间用一个空格隔开,语句中除了英 ...
- 求二进制数中1的个数
<<编程之美>>中有这么个题目:对于一个字节的无符号整形变量,求其二进制表达形式中"1"的个数. 基础算法:辗转相除法 辗转相除法是十进制采用的算法,该算法 ...
最新文章
- Rocksdb 的一些参数调优策略
- R语言ggplot2可视化:使用堆叠的条形图(Stacked Barplot)可视化每个数据行(row)的缺失值的情况(Visualizing missing data counts in rows)
- CodeForces - 1316D Nash Matrix(构造+dfs)
- 请输入星期的第一个字母c语言,C语言经典案例:请输入星期几的第一个字母来判断一下是星期几,...
- IPv6转换服务正式发布
- 腾讯地图api-前端定位组件
- 大厂难进,Java面试该如何一面即中?
- 实习成长之路:MySQL十三: count(*)这么慢,我该怎么办?为什么那么慢?
- 简述python2.x和python3.x的区别_python面试题Python2.x和Python3.x的区别
- java 最新Xss攻击与防护(全方位360°详解)
- 屏幕录制软件哪个好?
- 惩罚函数将有约束优化转化为无约束优化问题
- 机器学习之层次聚类及代码示例
- Metasploit -- 渗透攻击模块(exploit)
- 计算机专业java论文题目_计算机专业毕业设计题目选题
- K8S学习之容器探测 livenessProbe、readinessProbe、startupProbe、lifecycle
- Error creating bean with name ‘processEngine‘: FactoryBean threw exception on object creation; neste
- 本土战略 Ubuntu创始人宣布将发中国版
- 面试:GET 请求能上传图片吗,已解决
- 关于高电平与低电平的使用