题目:
给定一个数N,求出1-N之间的数字有多少个1,例如N=11时结果为4(只有1,10,11含1)

经典问题。

参照编程之美分析

编程之美上的一道题目,原文分析的方法十分简单,并且很容易程序实现。分析:
若x = abcde,我们来看百位为1出现的次数,这里分3种情况讨论:
1. 百位为0时,假设x = 45021,可以算出百位为1出现情况:
      100~199
     1100~1199
    ...
    44100~44199
    总共是45*100个1
2. 百位为1时,假设x = 45121,可以算出百位为1出现情况:
      100~199
     1100~1199
    ...
    44100~44199
    45100~45145
    总共是45*100+(45+1)个1
3. 百位大于1时,假设x = 45821,可以算出百位为1出现情况:
      100~199
     1100~1199
    ...
    44100~44199
    45100~45199
    总共是(45+1)*100个1

于是,我们可以找到这样一个规律,对于某一特定的位,该位出现1的次数为:
1. 若该位的值为0,则该位出现1的次数=高位值*该位的进制
2. 若该位的值为1,则该位出现1的次数=高位值*该位的进制+低位值+1
3. 若该位的值大于1,则该位出现1的次数=(高位值+1)*该位的进制

转载于:https://www.cnblogs.com/cavehubiao/p/3309278.html

计算1至n中数字X出现的次数相关推荐

  1. Python实现计算一段文本中每个单词出现的次数

    看实验楼的课程,有一个小练习,做了一下.要求用Python实现计算一段文本中每个单词出现的次数. sentence = 'hello world nihao world hey hello java ...

  2. python实现计算字符串或列表中每个字符出现的次数,并打印出现次数最多的字符

    chars=['a','c','x','d','p','a','m','q','s','t','p','a','t','c','c'] char1s='abcdcdefasbcd' dict={} # ...

  3. python用字典统计单词出现次数_python - 如何使用字典理解来计算文档中每个单词的出现次数...

    我有一个用python编写的列表,其中充满了文本.就像每个文档中的固定单词.所以对于每个文档,我都有一个列表,然后在列表中列出所有文档. 所有列表只包含唯一的单词.我的目的是计算完整文档中每个单词的出 ...

  4. OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

    1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如 ...

  5. mysql dp.cal 显示汉子_计算1到N中各个数字出现的次数 --数位DP

    题意:给定一个数n,问从1到n中,0~9这10个数字分别出现了多少次.比如366这个数,3出现了1次,6出现了2次. 题解:<剑指offer>P174:<编程之美>P132 都 ...

  6. python如下函数返回两个数的平方和_计算Lis中数字平方和的函数

    我试着写一个平方和(xs)函数来计算列表xs中数字的平方和.例如,平方和([2,3,4])应返回4+9+16,即29: 我试过的是:import random xs = [] #create thre ...

  7. 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储

    1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...

  8. python计算平方面积_python中求平方

    python学习(2)--变量与表达式 python学习(2)--变量与表达式 1.与java和c语言相通,python中也分为四种运算符: (1)算数运算符(如:+.-.*./); 学过java或者 ...

  9. C语言 计算一串字符中出现的数字字符数

    getchar 函数的功能是读取字符串并将其返回.输入结束或读取过程中发生错误时,就会返回EOF值. #include <stdio.h>int main(void){int i, str ...

  10. 计算找到出现最多的数字和次数 ,实现数组去重 ,进行排序。

    实现 1.计算找到出现最多的数字和次数 2. 实现数组去重 3. 进行排序 <!DOCTYPE html> <html lang="en"><head ...

最新文章

  1. MLIR中间表示和编译器框架
  2. FTP的两种模式和在实际工作中应用
  3. Adobe Flash Player 10新特性详解:支持GPU加速
  4. ​​​​​​​Git学习笔记与IntelliJ IDEA整合
  5. python内置库绘制33角形_33 python format练习题 利用format方法生成一个星号三角形...
  6. 配置WCF同时支持WSDL和REST,swaggerwcf生成文档
  7. 集合习题之列出有限集合所有子集
  8. 实现位数超过32bit的整数的加减乘除运算_Java 运算符
  9. 【多线程】--生产者消费者模式--synchronized版本
  10. 大数据分析平台如何进行支出跟踪
  11. 法斗几个月长鼻筋_带锯罢工了,木工小哥检查问题出在哪里?分享带锯使用九个月感受...
  12. MYSQL客户端访问服务端
  13. Android实现TCP客户端
  14. AIDA64 5.92.4300 序列号
  15. java栈和队列的区别是什么意思_java中栈和队列的区别是什么?
  16. PHP生成短链接的方法
  17. 自动化学科前沿讲座分享,作业,自动化与人工智能
  18. 第五十七章 Caché 函数大全 $REPLACE 函数
  19. 顶级的 18 款开源的低代码开发平台,经典收藏
  20. 一步一步学Silverlight 2系列(1):创建一个基本的Silverlight应用

热门文章

  1. 用中位数代替平均数来衡量民生指标
  2. UBUNTU开启IPV6
  3. 安装APK时INSTALL_FAILED_ALREADY_EXISTS的解决办法
  4. python 获取进程id_使用python 获取进程pid号的方法
  5. python连接pymysql主机目标无响应_Python 解析pymysql模块操作数据库的方法
  6. 传统词向量nlp处理的优缺点_吴恩达深度学习笔记(126) | NLP | GloVe 词向量
  7. python从网页提取文本_从网页中提取文本
  8. crontab 日志_linux计划任务-单次任务(at)与循环任务(crontab)
  9. Flask框架的学习与实战:实战小项目
  10. GitLab版本管理(转)