这个问题关键在于好好分析一些样例如:
给定123这个数,你说这个从1到123所有数字中,1出现的次数是多少?
首先我们要分析个位上1出现的次数,我们看看什么情况下个位出现1:
1,11,21,31,41,-----91,101,111,121,
因为从1-123中其实就是有多少个十就行了。
你看下从1到100个位出现1的情况:
1,11,21,31,41,51,------91。有多少个呢?
就是10*1=10个 
其实就是从01,11,21,31,41,51-----91当然是10了。
就是1-100中个位有10个1.
然后再从101-123呢个位有多少个1?
就是101,111,121,有(2+1)*1=3个。
其实我们可以这样了。
那么再分析十位上出现1的情况:
1-123.
则有10-19    110-119
有多少个呢?
首先看1-100有
10-19 有10个
然后110-119 有10个
则有(1+1)*10=20个
为什么是1+1?
其实和123中10位数字有关,你想如果是103呢十位有多少个1?
就是1*10=10个
113呢?
就是1*10+3=13.
123呢?
2>1呢
(1+1)*10=20了。
于是就有规律了。 

源代码:
  1. #ifndef NUMBER_OFONEINDATA_H
  2. #define NUMBER_OFONEINDATA_H
  3. #include<iostream>
  4. unsigned int numberOfOneInData(unsigned int v_data){
  5. if(v_data<=0){
  6. return 0;
  7. }
  8. unsigned int oneCount=0;
  9. unsigned int iFactor=1;
  10. unsigned int icurrentUnitNum=0;
  11. unsigned int iLowerNum=0;
  12. unsigned int iHigherNum=0;
  13. while(v_data/iFactor!=0){
  14. iLowerNum=v_data-(v_data/iFactor)*iFactor;
  15. icurrentUnitNum=(v_data/iFactor)%10;
  16. iHigherNum=v_data/(iFactor*10);
  17. switch (icurrentUnitNum)
  18. {
  19. case 0:
  20. oneCount+=iHigherNum*iFactor;
  21. break;
  22. case 1:
  23. oneCount+=iHigherNum*iFactor+iLowerNum+1;
  24. break;
  25. default:
  26. oneCount+=(iHigherNum+1)*iFactor;
  27. break;
  28. }
  29. iFactor=iFactor*10;
  30. }
  31. return oneCount;
  32. }
  33. #endif



1到N中1出现的次数的更多相关文章

  1. 整数中1出现的次数(从1到n整数中1出现的次数)

    题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.AC ...

  2. 剑指Offer:面试题32——从1到n整数中1出现的次数(java实现)

    问题描述: 输入一个整数n,求1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11,12,1一共出现了5次. 思路:(不考虑时间效率的解法,肯定不 ...

  3. 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)

    题目1373:整数中1出现的次数(从1到n整数中1出现的次数) 题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他 ...

  4. 剑指Offer 整数中1出现的次数(从1到n整数中1出现的次数)

    题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...

  5. 【编程题目】在从 1 到 n 的正数中 1 出现的次数

    30.在从 1 到 n 的正数中 1 出现的次数(数组)题目:输入一个整数 n,求从 1 到 n 这 n 个整数的十进制表示中 1 出现的次数.例如输入 12,从 1 到 12 这些整数中包含 1 的 ...

  6. 25.在从1到n的正数中1出现的次数[NumberOf1Between1_N]

    [题目] 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. [分析] 这是一道广为流传的goo ...

  7. 剑指offer系列57---整数中1出现的次数

    [题目]求出1~n的整数中1出现的次数.(10进制) package com.exe11.offer; /** * [题目]求出1~n的整数中1出现的次数. * @author WGS * */ pu ...

  8. (剑指Offer)面试题32:从1到n整数中1出现的次数

    题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,一共出现了5次. 思路: 1.累加法 累加1到n中每个整数 ...

  9. Google面试题:计算从1到n的正数中1出现的次数

    题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. 找工作,准备看写题目,题目说是Goo ...

  10. 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 ...

随机推荐

  1. WebForm组合查询

    封转类 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <sum ...

  2. 土豪聪要请客(stol)

    土豪聪要请客(stol) 众所周知,聪哥(ndsf)是个土豪,不过你们不知道的是他的MZ和他的RMB一样滴多…… 某天土豪聪又赚了10^10000e的RMB,他比较开心,于是准备请客.他在自己在XX星 ...

  3. podupdate时没有进度

    pod无法下载,解决方法. pod install --verbose --no-repo-update 原有命令被墙了. pod install --verbose --no-repo-update ...

  4. 【MySQL】MySQL PLSQL Demo - 006.循环(WHILE DO and FOR LOOP)

    WHILE DO drop procedure if exists p_while_do; create procedure p_while_do() begin declare i int; ; d ...

  5. loadrunner安装汉化破解

    1.解压loadrunner11,点击setup.exe安装loadrunner11. 遇到问题,"...输入命令\来解决". 解决办法:运行解压包的loadrunner-11安装 ...

  6. .Net(C#)Parallel"循环"的解释以及与循环的比较

    Parallel 类提供对并行循环和区域的支持. 许多个人计算机和工作站都有两个或四个内核(即 CPU),使多个线程能够同时执行. 在不久的将来,计算机预期会有更多的内核. 为了利用当今和未来的硬件, ...

  7. ABAP Util代码

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. 部署PDA程序的时候存储不足的解决办法

    通常Windows Mobile的存储空间分为程序内存和存储内存,默认都比较小,当程序比较大的时候可能无法正常部署到设备上面,针对此问题可采用如下办法解决:1.通过VS修改,工具--选项--设备--选 ...

  9. FZU 2213 Common Tangents(公切线)

    Description 题目描述 Two different circles can have at most four common tangents. The picture below is a ...

  10. Windows Internals学习笔记(一)概念与工具

    参考资料: 1. <Windows Internals> 2. Windows Drive Kit 3. Microsoft Windows SDK 4. WDK下载地址 知识点: 1. ...