目录

1.问题描述

2.算法

3.注意事项


1.问题描述

一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。数字计数问题要求对给定书的总页码n(<=200000),计算出书的全部页码中分别用到多少次数字0,1,2,…,9。

2.算法

1) 利用求余求商函数divmod(a,b)获得除10的余数和商,并将数字累加到数组中。

div,mod = divmod(i,10)

2)同样可以使用数学公式来求得余数和商:

#div = i/10
        #mod = i%10#功能上同,都是求余求商

3.注意事项

1)考虑到当i<10时,求得div均为0,如果此时累加的话,0的累加数量就会出错,所以要进行单独考虑。

2)通过numpy函数库,调用numpy.zeros()函数,创建一个全0数组,用来存放各数字的累计数量。

3)考虑到文件输入的需求,留有文件输入的接口:

df = pd.read_excel('booknumber.xlsx')

N = df.loc[0]

4)通过range(a,b)函数创建一个有序数列,值得注意的是该函数不包括右端点数值,故需要对传入的数据N进行n=N+1处理。

5)由于用10求商div,所以会出现div>10的情况,在这种情况下需要单独处理。对div多次使用divmod(a,b)函数,直到div<10为止。

#引入所需模块
import numpy as np
#留有通过文件传入数据的功能接口
# df = pd.read_excel('booknumber.xlsx')
# N = df.loc[0]
#定义一个函数,传入N作为数据
def Book_Number(N):
#定义一个值全为0的,具有10个元素的一维数组,用来存放统计出来的各数字的数量arr = np.zeros(10, dtype=int)
#由于页码从1开始,在0到9之间,各数字各有一个,故将arr[i]设置为0
#在计算之前打印数组,查看数组元素print( arr)
#由于包含右端点,故N+1n = N + 1
#页码从1开始进行计算for i in range(1, n):#调用求商和求余函数#div = i/10#mod = i%10#功能下同,都是求余求商div,mod = divmod(i,10)#当i<10时,商div均为0,不能累加到0的数组中if i<10:arr[mod] += 1#任何数用10求余数,余数必然小于10#对应的余数作为数组下标,自动累加else:arr[mod] += 1#由于用10求商,商有可能大于10,故需要对大于10的商再进行求商求余数,直到商小于10while div>=10:div,mod = divmod(div,10)arr[mod] += 1#将最后一个小于10的商累加到对应的数组元素中arr[div] += 1#打印查看累加完的数组数据print(arr)#对数据进行组织,格式化输出为人能看懂的形式print("当N为{}时,0共有{}个,1共有{}个,2共有{}个,3共有{}个,4共有{}个,\
5共有{}个,6共有{}个,7共有{}个,8共有{}个,9共有{}个".format(N,arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8],arr[9],))Book_Number(20)

统计0到n各数字的个数相关推荐

  1. 输入一串数字统计0到9每个数字的个数

    题目: 输入一串字符统计这串字符中0有多少,1有多少,-,9有多少. #include <stdio.h> int main() {char c;int shu[10]={0},i;whi ...

  2. 统计0到n之间1的个数

    问题描述 给定一个十进制整数N,求出从1到N的所有整数中出现"1"的个数.  例如:N=2时 1,2出现了1个 "1" . N=12时 1,2,3,4,5,6, ...

  3. 4000000000内满足f(n)=n最大的n(f(n)统计0~n中所有1的个数)

    2019独角兽企业重金招聘Python工程师标准>>> #include <windows.h> #include <cstdlib> #include &l ...

  4. 统计字符C语言循环结构,C语言循环结构 -C语言统计字符和数字的个数

    这是一个C语言 while 循环示例:输入一串以?为结束标志的字符,统计其中字母和数字的个数. 问题分析 输入:从键盘输入一个以?结尾的字符串. 输出:两个整数(分别表示字母和数字的个数). 这是一个 ...

  5. 统计问题:找链环数字对的出现频率

    #include<stdio.h> #include<stdlib.h> void pair_digital(int n) {int a[10][10]={0};//定义存储链 ...

  6. python统计字母空格个数_python统计字母、空格、数字等字符个数的实例

    如下所示: # -*- coding: utf-8 -*- # 要求:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. def count(s): count_a=count_z=c ...

  7. 使用函数统计指定c语言,浙大版《C语言程序设计(第3版)》题目集 习题5-5 使用函数统计指定数字的个数...

    热门文章推荐 以下50道算法编程题访问量较大,包含常用语法,数据结构,解题思路等等,作为C语言学习者必练题目推荐给各位.创作不易,记得一键三连哦!!! 习题5-5 使用函数统计指定数字的个数 本题要求 ...

  8. 统计字符串元素出现的个数_LeetCode 1295. 统计位数为偶数的数字

    题目 1295. 统计位数为偶数的数字 描述 给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数. 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: ...

  9. c语言 统计数量用count_c语言中统计重复数字次数 c语言问题 统计不同数字的个数...

    请问c语言当中,如何统计数字各自出现的次数 请教一个问题: 在c语言当中,用数组的方法,统计输入的一串数字,统计实现代码: #include int main() { int num = 0, i = ...

最新文章

  1. 自动机器学习(AutoML)
  2. 温州大学《机器学习》课程课件(五、机器学习实践)
  3. Dns服务器与iptables的问题【已解决】
  4. 【C++基础学习】关于C++静态成员函数和变量
  5. Jupyter Notebook使用说明
  6. 【资源分享】ArcFace Demo [Android]
  7. Available Packages更换国内源后,仍显示为nothing to show
  8. html强制文档模式ie8,html5 – IE9:强制IE9浏览器模式和文档模式
  9. redis-shake数据同步迁移工具
  10. java 邮件发送乱码_java邮件发送乱码解决方法
  11. 《基于运算放大器和模拟集成电路的电路设计》PDF云盘资源分享
  12. Apache详解(五)WEB相关工具
  13. 微信小程序开发费用一览表 微信小程序制作费用是多少钱
  14. 补码,负数比整数多表示一个
  15. 旅行青蛙(旅かえる)的最全攻略(不懂日语的可以看看)
  16. 美学心得(第二百一十七集) 罗国正 (2020年12月)
  17. 在html页面上引用脚本文件,如何在html中调用JS文件
  18. 七年级上学期计算机测试题,七年级英语上学期期末测试题及答案
  19. InnoDB存储引擎内部结构
  20. 认识C标准函数库全集-2-测试及定义类文件-assert/errno/ctype/float/limits/locale/stddef

热门文章

  1. 深度linux源代码,LinuxDeepin 更新源简介
  2. 2019年线上销量翻倍!立白如何用数智化刷新自己?
  3. 面向切面编程实现Nestjs接口Api数据缓存
  4. 通往智慧之路:IBM认知计算课程体系
  5. 骁龙780G、天玑800和麒麟820 哪个好
  6. 不用OCR,如何实现图片验证码的自动识别
  7. 大数据分析案例-基于随机森林模型对北京房价进行预测
  8. R6220关于breed刷机,breed-2022-07-24 r1416
  9. nodejs中解决异步嵌套循环,循环嵌套异步
  10. 妙味课堂cctv移动端项目