《计算机算法设计与分析》系列--算法实现题1.1-统计数字问题

news/2025/9/24 22:26:33/文章来源:https://www.cnblogs.com/feiyang2025/p/19110110

引言:
这个题在原书的配套习题解答中,描述得比较简略,我不太看得懂,于是按自己的思路做了一遍。

问题描述:
一本书有n页,页码为1,2,.. N,(注意,页码的格式,0不会在最前面)
问在这所有的页码中,0-9这10个数字,分别有多少个?
比如11页的书,

数字 0 1 2 3 4 5 6 7 8 9
次数 1 4 1 1 1 1 1 1 1 1

分析:
1、穷举法,for(i=1; i<=n; i++) 分解每一个页码,然后统计,可以得到结果,但时间复杂度太高,为nlogn,显然不是我们理想中的答案。

2、
以n=3267,m=4(位)为例,如果页码是从第0页开始,且格式是:0000,0001,0002,3266,3267

如果是数字1:
在第1位(千位)的次数是:1000个(1000-1999)
在第2位(百位)的次数是:,400个,(0100-0199,1100-1199,2100-2199,3100-3199)
即千位的0-3共4个,4100=400;
在第3位的次数是:,330个(0010-0019,3210-3219);即千位和百位00-32共33个,33
10=330;
在第4位上的次数是:000-326共327个;
所以1的个数为:1000+400+330+327=2057个;

如果是3:
在第1位的次数是:268,是的,就是后面几位;
在第2位的次数是:(0300-0399,1300-1399,2300-2399,0),300个;
在第3位的次数是:00-32共33个,330个
在第4位的次数是:0003--3263,327个,
所以3的个数为:267+300+330+327=1224个;

如果是6:
在第1位的次数:0
在第2位的次数:0600-0699,1600-1699,2600-2699,300个
在第3位的次数是:(0060-0069)--(3160--3169) 320个, 3260-3267,8个
在第4位的次数是:0006--3266,共327个;
300+320+8+327=955个;

总结:
把数字n存放在数组中,a[4]={3,2,6,7},把数字0-9和此数组每一位依次比对。
如果小于,cnt = (n/10(m-i)+1)*10(m-i-1)
如果等于,cnt = n/10^(m-i) * 10^(m-i-1) + n%(10^(m-i-1)) + 1;
如果大于:cnt = n/(10^(m-i)) * 10^(m-i-1)

代码如下:
sx1.1

这个复杂度为logn,比较满意。
好久没写代码了,有点手生。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银河麒麟系统root密码重置

银河麒麟系统root密码重置 一、系统环境Kylin-Server-V10-SP3-2403-Release-20240426-x86_64二、系统密码重置 1.重启系统重启操作系统,出现如下界面后按e键,进入grub模式。2.默认grub账户密码系统需要输入grub账户密…

银河麒麟系统磁盘管理

银河麒麟系统磁盘管理 一、系统环境Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso二、磁盘管理 1.添加物理磁盘系统识别磁盘,不重启系统重新扫描 SCSI 主机适配器识别到新连接的 SCSI 或 SATA 存储设备 ech…

浅谈傅里叶级数

我们可能都听说过傅里叶级数,但我们确切地知道它是什么吗?在这篇文章中,我将尝试逐一剖析这些概念。希望到最后,当你听到这些术语时,无论是在机器学习文献中还是与数学相关的内容中,你都能明白是怎么回事。 傅里…

js遍历对象

js遍历对象JavaScript 对象是由键值对组成的集合,遍历对象即逐个访问这些键值对。 常见的遍历方法包括 for...in 循环、Object.keys()、Object.values() 和 Object.entries()。 在jquery中还经常使用$.each(obj, func…

瑞丽网站建设域名注册局官网

目录 配置开始 Zabbix添加linux主机 4.为agent.zabbix.com添加模板 环境&#xff1a; &#xff08;隔天做的更换了IP&#xff0c;不影响实际操作&#xff09; IP 192.168.50.50 关闭防火墙规则 更改主机名 [rootlocalhost ~]# vim /etc/hostname agent.zabbix.com [rootloca…

day 10 (函数2 )

day 10 (函数2 &)课程:https://www.bilibili.com/video/BV1o4411M71o?spm_id_from=333.788.videopod.episodes&p=183 10.1 函数二学习目标简介------------------------------------------------ 执行后10…

入驻了爱发电

从2025/9/24起,我正式入驻了爱发电平台

奖励函数(双足)

1.通用奖励项:is_terminated,判断机器人是否终止 2.基座惩罚项 惩罚基座z方向的速度,鼓励机器人保持平衡 惩罚基座x,y方向上的角速度,鼓励机器人保持水平 3.关节惩罚项 惩罚关节加速度,鼓励平滑运动 关节位置限制…

离线部署镜像仓库搭建

离线部署镜像仓库搭建 一、系统准备一台可联网服务器:用于同步仓库(与目标系统同架构) 一台离线内网服务器:最终使用离线内网仓库的机器 存储空间:至少200GB 系统版本:CentOS Linux release 8.5.2111二、在可联网…

Temporal和Airflow有什么差别

Temporal和Airflow有什么差别 Temporal 和 Apache Airflow 是两种主流的工作流编排工具,但它们在设计理念、核心优势和适用场景上有着显著的不同。下面通过一个表格快速梳理它们的核心差异,然后我会进一步解释这些差…

厚街公司网站建设wordpress模板和下载不同

转载一篇问题解决博客&#xff1a;问题解决 一、烧录系统 使用SDK烧录 二、安装archiconda3 JETSON TX2 NX的架构是aarch64,与win10,linxu不同,所以不能安装Anaconda&#xff0c;这里安装对应的archiconda。 1. 安装 wget https://github.com/Archiconda/build-tools/rel…

有前景的长沙企业网站建设开发一套小程序大概多少钱

在C语言中&#xff0c;位段&#xff08;Bit Fields&#xff09;是一种用来对结构体中的成员进行位级别的控制的特性。通过位段&#xff0c;我们可以灵活地控制结构体中各个成员的位数&#xff0c;从而节省内存空间并提高程序的效率。本篇博客将详细讲解C语言中位段的相关知识&a…

建立网站教程dedecms_v5.6室内装饰设计公司企业网站模板.rar

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 紧接着上篇文章学习的串口通信,今日学习如何让树莓派开机…

lc1035-不相交的线

难度:中等(中期)题目描述“连连看” 上下两个数组,相同的数可以连线,问在不交叉的情况下最多可以连多少条线示例 输入:nums1 = [1,4,2], nums2 = [1,2,4] 输出:2 解释: 1 4 2 | \ 1 2 4输入:nums1 = [2,5,1,…

Spring Boot 接入 Redis Sentinel:自动主从切换与读写分离实战(修复单机多实例与 Sentinel 配置坑) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

智能中控终端-多环境联动的智慧管控中枢

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

自我介绍与未来规划

自我介绍与未来规划一、自我介绍 大家好,我叫李昊,专业是数据科学与大数据技术; 方向:大数据开发、大数据分析; 兴趣爱好:听歌、排球、调酒(熟练使用基础调酒工具,能够调制多款经典鸡尾酒并且自研了多款特调)…

广西网站建设开发深圳网站建设哪家公司便宜

为什么要判断物理机&#xff0c;因为授权不能对虚拟机安装后的软件进行授权。虚拟机可以复制可以克隆&#xff0c;无法作为一个不可复制ID来使用。 总结了如何判断物理机&#xff1a; 1. 用systeminfo的系统型号。&#xff08;注&#xff0c;有资料是看处理器和bios。但是我这…

做网站映射tcp打开百度官网

引言 在现代软件开发中&#xff0c;我们经常需要处理大量的数据。为了有效地管理这些数据&#xff0c;我们需要使用一些强大的框架。其中&#xff0c;Spring Boot和MyBatis-Plus是两个非常流行的框架。Spring Boot是一个基于Spring的开源Java框架&#xff0c;可以用于创建独立…

图片展示类网站北京引流推广公司

时钟周期、状态周期、机器周期、指令周期与晶振频率之间的关系 1、晶振频率与脉冲的关系 假设单片机的晶振频率是12MHz&#xff0c;那么它的一个脉冲为1/12微秒&#xff1b;晶振单位时间发出的脉冲则为&#xff1a; 12 ∗ 1 0 6 12*10^6 12∗106。 假设单片机的晶振频率是4MH…