从1到n整数中1的个数】的更多相关文章

计算一个无符整数中1Bit的个数(1) 2010-04-20 10:52:48 分类: C/C++ [转]计算一个无符整数中1Bit的个数(1)   Count the number of bits that are on in an unsigned integer(计算一个无符整数中1Bit的个数)-- (1) 计算一个无符号整数中有多少的Bit为1 这是一个经常遇到的经典问题,这里分两个部分讲解和总结,首先对讲解现有的算法,然后再讲解一些改进算法. 1.循环法(Iterated Count…
[问题]求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数). [思路]只写一个思路简单而暴力,我们首先使用一个函数去统计每一个数中1的个数,然后,我们遍历1到n的每个数,然后将所有1的统计数量相加,即可得到结果!其他思路都太绕了,也有人将…
之前也写过一篇这样的文章,但是隔了这么久,竟然忘了.还是要有清晰的思路,才能真正的掌握. 这道题是这样的: 给出两个非负32位整型范围内的数a,b,请输出闭区间[a,b]内所有数二进制中各个位的1的总个数. 分析:为的是求2进制中1的个数.从0-15的二进制如下: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 第一位的1,每隔2就出现.第二位的1,每隔4出现2次.第三位的1,每隔8出…
为了依次求个位,十位,百位中1的个数,我们可以把这个数字分为三部分,高位数字,当前位数字,低位数字. 如果当前位为0,那么此位为1的数目与高位数字有关 如果当前位为1,那么此位为1的数目与高位和地位都有关 如果当前位其他,那么此位为1的数目与高位数字有关 具体规律看源代码 #include <iostream> using namespace std; int main() { int N; cin >> N; int factor = 1; int count = 0; whil…
题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数. 见到这道题的第一反应可能是我可以先计算1~n每个数中1出现的次数,然后把所有结果相加即可.此时,时间复杂度为O(n*log(n)). 接下来是一种时间复杂度为O(log(n))的解法(这里以一个具体的例子来进行…
问题描述: 输入一个整数n,求1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11,12,1一共出现了5次. 思路:(不考虑时间效率的解法,肯定不是面试官期望的) 直观想法:累加1到n中每个整数中1出现的次数. 每个整数中1出现的次数可以由除以10和模10来计算得到. 代码如下: boolean invalidInput = false; //不考虑时间效率的解法 public int NumberOf1Between1AndN_Soluti…
题目1373:整数中1出现的次数(从1到n整数中1出现的次数) 题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他.问题是:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数. 输入:…
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数.     思路: 1.暴力. 2.通过当前位的数值,计算当前位为1的的数有多少个,然后相加.   代码: 1. class Solution { public: int NumberOf1Between1An…
题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,一共出现了5次. 思路: 1.累加法 累加1到n中每个整数1出现的次数. 求每个整数1出现的个数:通过对10求余数,判断整数的个位是否为1,如果商不为0,则继续除以10再判断个位数字是否为1. 时间复杂度:O(nlogn) 2.递归 以21345为例,把1到21345的所有数字分为两段,1-1345,1346-21345. 先看1346-21345,1的出…
The task is simple: given any positive integer N, you are supposed to count the total number of 1's in the decimal form of the integers from 1 to N. For example, given N being 12, there are five 1's in 1, 10, 11, and 12. Input Specification: Each inp…
[面试题032]从1到n整数中1出现的次数 题目:     输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.     例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1出现了5次.   思路一:     对每一个数字做判断,把1出现的数字累加.     可以通过对10取余,判断这个数字个位上的数字是不是等于1,然后这把这个数字除以10,相当于是10进制下面的向右边移动了一位.       如果输入数字为n,n有logn位,那么我们要判断每一位是不是1,那么它…
题目地址:http://ac.jobdu.com/problem.php?pid=1373 题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他.问题是:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数…
个位ch个数 + 十位ch个数 * 10 + 百位ch个数 * 100:同时如果某一位刚好等于ch,还需要减去多算的一部分值. #include <stdio.h> //整数1到n,字符ch出现的次数:如1到12,1出现5次 int count1s (int n, char ch){ int i = ch - '0'; int count = 0; int j = 1; int m = n; int t = 0; int k = 1; if (i == 0) i = 10; //循环比较最后一…
一  问题描述: 找出 m 个整数中第 k(0<k<m+1)大的整数. 二  举例: 假设有 12 个整数:data[1, 4, -1, -4, 9, 8, 0, 3, -8, 11, 2, -9],请找出第 5 大的数(容易知道是0). 三   算法思路:        一种基于快排思想的算法可以在 O(n) 复杂度内找到第k大的数,首先要知道 partition 这个函数,它可以调整一个序列 使小于 key 的元素都排在 key 左边,大于 key 的元素都排在 key 右边,key 可以…
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从 1到12这些整数中包含1的数字中1,10,11和12,1一共出现了5次 本题可以直接变量1到n的n个数然后分别计算每个数中1的个数,然而这种方法是效率很低下的 书上给出了一共方法,去找数n各个位置上出现1的规律,在这里我就不再描述具体的规律推倒 过程,只是给出这样一个普遍性的规律. 1.对每一位上面的数字,当该数字等于零时,该位上1的个数等于 高位*该位的位数 2.对每一位上面的数字,当该数字等于1时,该位上…
题目: 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数. 思路: 比如求1到34597中1出现的次数.首先划分两段:1到4597,4598到34597.第二段的话,最高位1出现的次数为10000~19999,总共10000次(假设n的位数为b,即10的b次方个):另…
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数. 代码一: 代码二(很精简,但不明白): public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int ones = 0;…
题目: 给出1个正整数,找到用与这个数字相同的digit组成的整数中比这个数字大的数集中的最小数字.比如:12352874 的结果是 12354278 分析: 这道题目的考虑目标是数组的查找与排序. 当然, 前提是你得明白这道题目的思路是什么样子的. 把正整数转化为char数组a, 长度为n, 末尾字符是a[n-1], 然后对该数组逆序查找, 会发现, 第一个a[n-1]比小的字符是a[i], 然后字符a[i]跟a[n-1]交换, 最后对数组中i到n-1的部分进行升级排序, 你会发现, 正是最后…
题目 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数. 思考 方法1: 依次从 1 到 n 遍历,统计每个数中 1 出现的次数,然后累加起来.时间复杂度:遍历 n 个数,每次统计可以在 log(n) 时间内完成,因此 O(nlog(n)). 方法2: 新的角度:给定…
最近在看<剑指Offer>,面试题32的题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1.10.11和12,1一共出现了5次. 对于书中说的不考虑时间效率的解法很好理解,可以直接完成,但是对于书中介绍的另一种方法,没有理解,于是按照自己的思路进行了分析. 1位数,1-9中,1一共出现了1次: 2位数,10-99中,10-19的十位上一共出现了10*1=10次,对于每个十位开头的数字10-19.20-29,每个数个位上出现的…