LeetCode每日一题4.13
1922. 统计好数字的数目
问题
问题分析
题目要求我们找到长度为 n 且满足特定条件(偶数下标处为偶数,奇数下标处为质数)的数字字符串的总数,并对 (10^9 + 7) 取余。
思路
1.枚举
生成所有可能的数字字符串:对于长度为 n 的数字字符串,总共有 (10^n) 种可能性。
检查每个字符串是否为好数字:
偶数下标处的数字必须是偶数(0, 2, 4, 6, 8)。
奇数下标处的数字必须是质数(2, 3, 5, 7)。
计数满足条件的字符串数量。
2. 数学分析
定义好数字的条件:
偶数下标处的数字必须是偶数(0, 2, 4, 6, 8)。
奇数下标处的数字必须是质数(2, 3, 5, 7)。
计算每个位置的可选数字数量:
偶数下标处有 5 种选择(0, 2, 4, 6, 8)。
奇数下标处有 4 种选择(2, 3, 5, 7)。
根据 n 的长度计算总数:
如果 n 为 1,则只有偶数下标,因此结果为 5。
如果 n 大于 1,可以通过数学方法快速计算结果。
代码
- 枚举
class Solution:def countGoodNumbers(self, n: int) -> int:MOD = 10 ** 9 + 7def is_good_number(num_str):for i, digit in enumerate(num_str):if i % 2 == 0: # 偶数下标if digit not in '02468':return Falseelse: # 奇数下标if digit not in '2357':return Falsereturn Truecount = 0for i in range(10 ** n):num_str = str(i).zfill(n) # 确保长度为 n,前导零if is_good_number(num_str):count += 1return count % MOD
- 数学方法
class Solution:def countGoodNumbers(self, n: int) -> int:MOD = 10 ** 9 + 7# 偶数位的数量even_positions = (n + 1) // 2# 奇数位的数量odd_positions = n // 2# 计算结果result = (pow(5, even_positions, MOD) * pow(4, odd_positions, MOD)) % MODreturn result
复杂度分析
- 枚举:
时间复杂度:对于长度为 n 的数字字符串,需要检查 (10^n) 个字符串。当 n 较大时(例如 n >= 10),这种方法将变得极其缓慢。
空间复杂度:生成和存储大量字符串也会消耗大量内存。 - 数学分析;
时间复杂度:(O(\log n))
空间复杂度:(O(1))
学习
当字符串很大时,暴力枚举导致超时。
pow 函数被用来计算大数的幂并取模。
pow 函数在 Python 中有三种用法:
- pow(x, y):计算 (x) 的 (y) 次幂,即 (x^y)。
- pow(x, y, z):计算 (x^y \mod z),即 (x) 的 (y) 次幂然后对 (z) 取模。
pow 在本问题中的应用
在本问题中,pow 函数的第三种用法被使用,具体为 pow(5, even_positions, MOD) 和 pow(4, odd_positions, MOD)。
pow(5, even_positions, MOD):
(x = 5)(基数)
(y = even_positions)(指数)
(z = MOD)(模数,这里为 (10^9 + 7))
计算 (5^{even_positions} \mod (10^9 + 7))
pow(4, odd_positions, MOD):
(x = 4)(基数)
(y = odd_positions)(指数)
(z = MOD)(模数,这里为 (10^9 + 7))
计算 (4^{odd_positions} \mod (10^9 + 7))
pow 函数的优势
高效性:
pow 函数采用快速幂算法(也称为平方乘算法),其时间复杂度为 (O(\log y)),相比于直接计算 (x^y)(时间复杂度为 (O(y)))要高效得多。
快速幂算法通过将指数 (y) 不断减半来减少计算量,例如 (x^8 = ((x2)2)^2)。
防止溢出:
在计算大数的幂时,结果可能会非常大,导致溢出。
pow(x, y, z) 在每次中间结果时都会取模,有效地防止了溢出问题
学习参考
:灵茶山艾府
相关文章:
LeetCode每日一题4.13
1922. 统计好数字的数目 问题 问题分析 题目要求我们找到长度为 n 且满足特定条件(偶数下标处为偶数,奇数下标处为质数)的数字字符串的总数,并对 (10^9 7) 取余。 思路 1.枚举 生成所有可能的数字字符串:对于长度…...
Java学习——day29(并发控制高级工具与设计模式)
文章目录 1. 并发控制高级工具简介1.1 CountDownLatch1.2 CyclicBarrier1.3 Semaphore1.4 并发设计模式 2. 扩展生产者—消费者示例2.1 示例代码 3. 代码详解3.1 主类 ExtendedProducerConsumerDemo3.2 Buffer 类3.3 Producer 类3.4 Consumer 类 4. 编译与运行结果4.1 编译4.2 …...
使用FormData格式上传图片
为什么要使用FormData格式上传图片 1. 为什么使用 FormData? FormData 是一种专门用于构建表单数据的对象,它能够以 multipart/form-data 格式发送数据,这是文件上传的标准格式。以下是使用 FormData 的主要原因: 简单易用 直…...
Tkinter表格与列表框应用
在图形用户界面(GUI)开发中,表格和列表框是常用的控件,用于显示和管理大量的数据。Tkinter提供了Listbox控件来显示简单的列表数据,而对于更复杂的表格数据,可以使用Treeview控件(属于ttk模块)来实现。这一章将介绍如何使用Listbox和Treeview来显示和操作数据,帮助您处…...
【Excel】数据透视表月度数据排序不正确
【问题】 插入数据透视表后,月度列显示的日期,是按照文本格式排序的,显然与实际月份排序并不相符。 【目的】 按照从1月份到12月份进行自然月度排序。 【方法】 步骤一: 在任意一处,输入“1月”-“12月”&#…...
HCIP第十天
OSPF的数据包 OSPF是跨层封装协议,直接封装在网络层之上 --- 需要IP协议使用一个协议号来标定 OSPF --- 89 OSPF的头部 版本 --- OSPF的版本 --- 2 类型 --- OSPF数据包的类型 --- hello -- 1 DBD -- 2 LSR -- 3 LSU -- 4 LSACK -- 5 路由器ID --- RID --- 携带的是发出O…...
Vue2,Vue3知识大全
Vue 1.了解vue,快速上手 vue是一个用于构建用户的界面的渐进式框架. vue的两种使用方法: vue核心包开发 场景:局部模块改造 vue核心包&vue插件 工程化开发 场景:整站开发 1.创建一个vue实例: 2.插值表达式 1.插值表达式是一种Vue的模版语法 作用:利用表达式进行插值…...
java面向对象02:回顾方法
回顾方法及加深 定义方法 修饰符 返回类型 break:跳出switch和return的区别 方法名 参数列表 package com.oop.demo01;//Demo01类 public class Demo01 {//main方法public static void main(String[] args) {}/*修饰符 返回值类型 方法名(...){//方法体return…...
【Ubuntu】【树莓派】Linux系统的远程终端登录、远程图形桌面访问、 X图形窗口访问和文件传输操作
目录 一、Ubuntu远程终端并实现文件上传下载 1.1Ubuntu桥接模式设置和新用户的创建 1.2Ubuntu的远程登录并上传和下载文件 1.3在Xming中进行Ubuntu的图形访问 二、树莓派远程登录并实现文件上传下载 2.1树莓派在putty上的远程登录 2.2使用ftp远程登录并实现文件上传下载…...
Linux Kernel 2
地址空间(Address Space) 一、物理地址空间(Physical Address Space) 物理地址空间 是指 RAM 和设备内存 在系统内存总线上所呈现的地址布局。 举例:在典型的 32 32 32 位 Intel 架构中, RAM(…...
二.springBoot项目集成ElasticSearch及使用
二.springBoot项目集成ElasticSearch及使用 1.依赖引入2.ElasticSearch常见用法 1.依赖引入 <!--elasticsearch搜索引擎--> <!--高版本7.0后TransportClient已被淘汰,用rest-high-level-client代替--> <dependency><groupId>org.elasticse…...
从三次方程到复平面:复数概念的奇妙演进(一)
注:本文为 “复数 | 历史 / 演进” 相关文章合辑。 因 csdn 篇幅限制分篇连载,此为第一篇。 生料,不同的文章不同的点。 机翻,未校。 Reflections on the History of Complex Numbers 复数的历史回顾 The first occurrence o…...
Day52 | 6. Z 字形变换、8. 字符串转换整数 (atoi)、22. 括号生成、38. 外观数列
6. Z 字形变换 题目链接:6. Z 字形变换 - 力扣(LeetCode) 题目难度:中等 代码: class Solution {public String convert(String s, int numRows) {if(numRows<2) return s;List<StringBuilder> rowsnew A…...
每日OJ_牛客_ruby和薯条_排序+二分/滑动窗口_C++_Java
目录 ruby和薯条_排序二分/滑动窗口 题目解析 C代码 Java代码 ruby和薯条_排序二分/滑动窗口 ruby和薯条 描述: ruby很喜欢吃薯条。 有一天,她拿出了n根薯条。第i根薯条的长度为ai。 ruby认为,若两根薯条的长度之差在l和r之间ÿ…...
快速幂运算
快速幂运算 一、快速幂运算快速幂运算(Exponentiation by Squaring)基本思想算法实现(②③为非递归)① 递归运算② 普通 除模运算(不带 **模数** 与 带 **模数**)③ 按位与运算 使用示例示例代码 复杂度分析…...
vue @import引入CSS scoped无效 造成全局样式污染
引入css文件导致全局样式污染 1.写在单组件的style里面css样式,如果标签内不加scoped可能会影响其他组件的样式 <style lang"scss" scoped> </style> 2.通过import引入的外部css文件,这种引入方式是全局的,也会影响其…...
基于Flask-Login简单登录和权限控制实践
1. 关于Flask-Login Flask-Login 是一个为python Flask Web框架设计的扩展,用于管理用户会话(用户登录状态)。它提供了简单的接口来处理用户登录、注销、记住用户等功能,同时确保用户会话的安全性。以下是 Flask-Login 的一些关键特性和功能: 1.1. 主要功能 用户会话管理…...
文件流---------获取文件的内容到控制台
总流程:先创建一个文本文件------->里面写入一些内容(纯字母和字母加文字)-----------> 然后通过输入流获取文件里面的内容,两种方式。 1.第一种,获取单个的字符 ,先创建文件 ,java.txt…...
idea 2024 build菜单不见了
Q如题 idea 2024 新版UI添加build和recompile菜单 A如图,右键顶部栏之后,点击Add to Main Toolbar菜单,在里面就能找到Build菜单,添加接口。 Recompile菜单的话在Customize Toolbar中搜索添加才行。...
深入理解计算机操作系统(持续更新中...)
文章目录 一、计算机系统漫游1.1信息就是位上下文 一、计算机系统漫游 1.1信息就是位上下文 源程序实际上就是一个由值0和1组成的位(又称为比特),八个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符 大部分现代计…...
[dp8_子数组] 乘积为正数的最长子数组长度 | 等差数列划分 | 最长湍流子数组
目录 1.乘积为正数的最长子数组长度 2.等差数列划分 3.最长湍流子数组 写代码做到,只用维护好自己的一小步 1.乘积为正数的最长子数组长度 链接:1567. 乘积为正数的最长子数组长度 给你一个整数数组 nums ,请你求出乘积为正数的最长子数…...
量子机器学习(Quantum Machine Learning, QML)在优化测试组合
量子机器学习(Quantum Machine Learning, QML)在优化测试组合选择中展现出显著潜力,通过量子计算的并行性和量子态叠加特性,可高效解决传统方法难以处理的组合爆炸问题。以下是其技术实现路径、优势及落地案例: 一、QML优化测试组合的核心原理 1. 量子并行性加速搜索 经典…...
Go语言Slice切片底层
Go语言(Golang)中切片(slice)的相关知识、包括切片与数组的关系、底层结构、扩容机制、以及切片在函数传递、截取、增删元素、拷贝等操作中的特性。并给出了相关代码示例和一道面试题。关键要点包括: 数组特性…...
导入 Excel 批量替换文件夹名称
文件夹重命名的需求是多种多样的,前面我们介绍过按照规则修改文件夹名称的方法。但是在某些场景下,这个方法可能是不适用的,比如我们修改文件夹的规则是多种多样的,是无规律的。那我们应该怎么做呢?今天我们就给大家介…...
数据库或表数据迁移(使用Navicat迁移MySQL数据库表数据)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 数据库或表数据迁移(使用Navicat…...
Matlab Add Legend To Graph-图例添加到图
Add Legeng To Graph: Matlab的legend()函数-图例添加到图 将图例添加到图 ,图例是标记绘制在图上的数据序列的有用方法。 下列示例说明如何创建图例并进行一些常见修改,例如更改位置、设置字体大小以及添加标题。您还可以创建具有多列的图…...
【Linux】what is pam?PAM模块学习笔记
文章目录 1. pam模块简介2. pam验证的工作流程3. pam模块配置文件3.1 配置文件的格式3.1.1 验证类别type3.1.2 验证的控制标识 control flag3.1.3 pam模块 4. login的PAM验证机制流程5. 补充:其他pam相关文件6. 参考内容 1. pam模块简介 PAM: Pluggable Authentica…...
5.1 GitHub订阅监控系统实战:FastAPI+SQLAlchemy高效架构设计与核心源码揭秘
GitHub Sentinel Agent 分析报告功能设计与实现 关键词:订阅管理 API 设计、GitHub API 集成、SQLAlchemy ORM、JWT 认证、单元测试框架 1. 订阅管理功能架构设计 订阅管理模块采用分层架构设计,通过 FastAPI 构建 RESTful 接口,结合 SQLAlchemy ORM 实现数据持久化: #me…...
【BEPU V1物理】BEPUphysics v1 入门指南 汉化笔记#1
BEPUphysics v1 入门指南 前言下载获取库工程1.创建物理模拟环境2.添加物理实体3.与物理系统交互4.发射物体5.构建环境6.事件处理7. 进阶学习 前言 本文档记录完成 BEPUphysics 物理引擎的基础设置。 文档链接:https://github.com/bepu/bepuphysics1/blob/master/Documentatio…...
方法加事务在多线程中注意事项
方法加事务在多线程中注意事项 redission分布式锁释放异常问题 https://www.jianshu.com/p/055ae798547a https://blog.csdn.net/cheng__yu/article/details/122625649 虽然文章 https://blog.csdn.net/cheng__yu/article/details/122625649 和 redission锁是没关系的&#…...
开源 2D 横版跳跃游戏 SuperTux
官网 https://www.supertux.org/ 正文 在游戏的世界里,开源游戏以其独特的魅力吸引着众多玩家和开发者。今天要介绍的 SuperTux,便是一款备受瞩目的开源 2D 横版跳跃游戏,风格类似经典的超级马里奥系列。 2024 年,SuperTux 开发团…...
基于HASM模型的高精度建模matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 本课题主要使用HASM进行高精度建模,主要对HASM模型进行介绍以及在实际中如何进行简化实现的。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行…...
C++多线程编程时的伪共享问题及其定位和解决
一、引言 在多线程编程和共享内存系统中,为了提高程序性能,常常需要对共享数据进行处理。然而,在并发环境下,一种名为“伪共享(False Sharing)”的问题可能会悄然出现,它虽然不像传统的多线程同…...
高并发短信系统设计:基于SharingJDBC的分库分表、大数据同步与实时计算方案
高并发短信系统设计:基于SharingJDBC的分库分表、大数据同步与实时计算方案 一、概述 在当今互联网应用中,短信服务是极为重要的一环。面对每天发送2000万条短信的需求,我们需要一个能够处理海量数据(一年下来达到数千万亿级别&…...
【HTML】html文件
HTML文件全解析:搭建网页的基石 在互联网的广袤世界里,每一个绚丽多彩、功能各异的网页背后,都离不开HTML文件的默默支撑。HTML,即超文本标记语言(HyperText Markup Language),作为网页创建的基…...
5.11 GitHub API调试五大高频坑:从JSON异常到异步阻塞的实战避坑指南
GitHub API调试五大高频坑:从JSON异常到异步阻塞的实战避坑指南 关键词:GitHub API 调试、JSON 解析异常、提示工程优化、异步任务阻塞、数据清洗策略 5.5 测试与调试:调试常见问题 问题1:GitHub API 调用异常 现象: requests.exceptions.HTTPError: 403 Client Error…...
协程的原生挂起与恢复机制
目录 🔍 一、从开发者视角看协程挂起与恢复 🧠 二、协程挂起和恢复的机制原理:核心关键词 ✅ suspend 函数 ≠ 普通函数 ✅ Continuation(协程的控制器) 🔧 三、编译器做了什么?࿰…...
机器学习中的数学(PartⅡ)——线性代数:2.2矩阵
概述 本节内容也相对简单,首先介绍了矩阵的定义,矩阵的表示方法;然后介绍了矩阵的加法和乘法,与标量的乘法,以及一些矩阵相关算数运算的性质,包括满足结合律、交换律;矩阵的逆和转置࿱…...
泉涌未来:科技与生态的共生诗篇-济南
故事背景 故事发生在中国山东济南的未来城市环境,这里不再是单纯的自然景观与现代建筑的堆砌,而是科技与生态深度融合的奇妙世界。泉水,这一济南的灵魂元素,在未来科技的赋能下,成为连接城市各个角落的纽带。量子态泉水…...
用AI生成系统架构图
DeepSeek+Drawio+SVG绘制架构图-找到一种真正可行实用的方法和思路 1、使用DeepSeek生成SVG文件,导入drawio工具的方法 🔥 问题根源分析 错误现象: • 导入时报错包含 data:image/SVG;base64 和 %20 等 URL 编码字符 • 代码被错误转换为 Base64 格式(适用于网页嵌入,但…...
网络基础1
目录 初识协议 协议分层 软件分层的好处 OSI七层模型 TCP/IP 五层(或四层)模型 再谈协议 为什么要有 TCP/IP 协议? TCP/IP 协议与操作系统的关系 所以究竟什么是协议? 网络传输基本流程 认识 MAC 地址 局域网(以太网为例)通信原理 报文的传…...
免费且好用的PDF水印添加工具
软件介绍 今天要给大家推荐一款超实用的PDF添加水印工具,它能够满足用户给PDF文件添加水印的需求,而且完全免费。 这款PDF添加水印的软件有着简洁的界面,操作简便,无需安装,解压后即可使用。 在使用前,先…...
C++Primer对象移动
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
互联网三高-数据库高并发之分库分表ShardingJDBC
1 ShardingJDBC介绍 1.1 常见概念术语 ① 数据节点Node:数据分片的最小单元,由数据源名称和数据表组成 如:ds0.product_order_0 ② 真实表:再分片的数据库中真实存在的物理表 如:product_order_0 ③ 逻辑表:…...
七、自动化概念篇
自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的过程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人…...
python操作mongodb
1、安装包 pyMongo是MongoDB官方推荐的Python驱动程序,它提供了访问MongoDB数据库所需的接口。安装PyMongo非常简单,可以通过pip包管理工具来安装最新版本: pip install pymongo 安装完成后,我们可以使用以下Python代码来检查是否…...
IS-IS中特殊字段——OL过载
文章目录 OL 过载位 🏡作者主页:点击! 🤖Datacom专栏:点击! ⏰️创作时间:2025年04月13日20点12分 OL 过载位 路由过载 使用 IS-IS 的过载标记来标识过载状态 对设备设置过载标记后ÿ…...
行星际激波在日球层中的传播:Propagation of Interplanetary Shocks in the Heliosphere (第二部分)
行星际激波在日球层中的传播:Propagation of Interplanetary Shocks in the Heliosphere (第一部分)-CSDN博客 Propagation of Interplanetary Shocks in the Heliosphere [ Chapter 3 ] [PDF: arXiv] 本文保留原文及参考文献,参…...
紫光同创FPGA实现HSSTLP光口视频点对点传输,基于Aurora 8b/10b编解码架构,提供6套PDS工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目紫光同创FPGA相关方案推荐我这里已有的 GT 高速接口解决方案Xilinx系列FPGA实现GTP光口视频传输方案推荐Xilinx系列FPGA实现GTX光口视频传输方案推荐Xilinx系列FPGA实…...
正则表达式使用知识(日常翻阅)
正则表达式使用 一、字符匹配 1. 普通字符 描述:直接匹配字符本身。示例: abc 匹配字符串中的 “abc”。Hello 匹配字符串中的 “Hello”。 2. 特殊字符 .(点号): 描述:匹配任意单个字符(…...