2.4 1的数目

题目:

写一个函数f(n),返回1到N之间出现的“1”的个数。

从特殊情况推导到一般情况。

分为该位数是0、1、其他。。

(1)如果这位上的数字是0的话,那么这个位上出现1的次数仅有更高位决定。

(2)如果这位上的数字是1的话,那么这个位上出现的1的次数不仅跟更高位有关,还跟更低位有关。

· (3)如果这位上的数字是其他(2-9)的话,那么这个位上出现1的次数仅由更高位决定。

代码如下:

__int64 Sum1s(__int64 n) {
	__int64 iCount = 0;
	__int64 iFactor = 1;
	__int64 iLowerNum = 0;
	__int64 iCurrNum = 0;
	__int64 iHigherNum = 0;

	while(n / iFactor != 0) {
		iLowerNum = n - (n / iFactor) * iFactor;
		iCurrent = (n / iFactor) % 10;
		iHigherNum = n / (iFactor * 10);

		switch(iCurrNum) {
			case 0:
				iCount += iHigherNum * iFactor;
				break;
			case 1:
				iCount += iHigherNum * iFactor + iLowerNum + 1;
				break;
			default:
				iCount += (iHigherNum + 1) * iFactor;
				break;
		}

		iFactor *= 10;
	}
	return iCount;
}
时间: 2024-12-27 12:11:30

2.4 1的数目的相关文章

NYoj-27-水池数目-DFS-BFS

水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据 每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水

求逆序数数目(树状数组+离散化)

404在玩忍者印记(Mark of the Ninja)操纵忍者时遇到这样一个场景,两栋大楼之间有许多绳索,从侧面看,就像这个样子: 我们的忍者非常有好奇心,他可以观察到每个绳索的端点在两栋楼的高度,想知道这些绳索有多少个交点(图中黑色的点).他观察到不会建筑上不会有一点上有两个绳索,并且没有三条绳索共点. 输入描述 第一行:整数T,代表有T组数据. (1 <= T <= 100) 下一行:整数N,代表有N条绳索. (1 <= N <= 100000) 接下来Na行给出两个整数A_

设置每个datanode里面的map数目,提高运行效率

首先可以通过hdfs.site.xml下面的dfs.block.size来设置数据的块大小,这个参数会决定map的总数目(4194304=4m) 然后通过mapred.site.xml下面的mapreduce.map.memory.mb参数来设置每个map分到的内存数目. 通过yarn.sidt.xml下面的yarn.scheduler.minimum-allocation-mb来设置每个节点分配一个task所占用的内存数目,也就是说在一个8g内存的节点上面如果这个值设定的大于4个g,那么在同一

多校2016 1004 HDU5784 统计锐角三角形数目

http://acm.hdu.edu.cn/showproblem.php?pid=5784 题意:n个点,找多少个锐角三角形数目 思路:极角排序+two pointers 当前选择的点集要倍增一倍,点集过大时,极角排序后,后面的点有可能和前面的点形成钝角 ans=总的三角形数目 - 三点共线的情况-直角和钝角 1 // #pragma comment(linker, "/STACK:102c000000,102c000000") 2 #include <iostream>

【蓝桥杯】历届试题 买不到的数目

  历届试题 买不到的数目   时间限制:1.0s   内存限制:256.0MB 问题描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖. 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17.大于17的任何数字都可以用4和7组合出来. 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字. 输入格式 两个正整数,表示每种包装中糖的颗

POJ1523(求连用分量数目,tarjan算法原理理解)

SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7406   Accepted: 3363 Description Consider the two networks shown below. Assuming that data moves around these networks only between directly connected nodes on a peer-to-peer basis, a

水池数目(nyoj27)(BFS)

水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据 每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水

nyoj--水池数目

描述南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池,0表示此处是地面) 输出 输出该地图中水池的个数.要注意,每个水池的旁边(上下左右

数对数目(原题转自微信号待字闺中)

题目 给定两个数组X和Y,元素都是正数.请找出满足如下条件的数对的数目: x^y > y^x,即x的y次方>y的x次方 x来自X数组,y来自Y数组 [思考5分钟~~~] 分析 假设数组X的长度为m,数组Y的长度为n,最直接的暴力法,时间复杂度为O(m*n),但这样的话,并不需要都是正数这个条件的.那么,我们该如何优化呢? x^y>y^x,对于x和y来讲,有什么规律呢?该如何发现呢?这里其实有规律的,大多数的条件下,当y>x的时候,x^y>y^x,但是有一些例外,1,2,3,4

计算DNA中每种核苷酸的数目

问题描述:计算DNA中每种核苷酸的数目 输入文件内容: 代码: 输出结果: