蓝桥杯 之 数论
文章目录
- 习题
- 质数
- 找素数
- LCM
- 报数游戏
- 快速幂
- 数字诗意
- 组合数与错位排序
- 小蓝与钥匙
- 同余
- 取模
- 数论,就是一些数学问题,蓝桥杯十分喜欢考察,常见的数论的问题有:取模,同余,大整数分解,素数,质因数,最大公约数,最小公倍数等等
整除
取模
同余
- 两个数同余,就是
a % k = b % k
,对于对同一个数的同余,那么就意味着a = b + x*k
,意味着它们相差k的倍数
,也就有(a-b) % k = 0
素数
- 首先介绍这个素数的问题,也就是质数,只能被
1或者本身整除
,最小的素数是2 - 需要掌握
埃氏筛或者欧拉筛
求解出1-n
的范围内的所有的质数
is_prime = [True]*(N+1)
prime = []
for i in range(2,N+1):if is_prime[i]:prime.append(i)for j in range(2*i,N+1,i):is_prime[j] = False
# 最后的话,这个prime 会存储所有的质数
求解一个数的质因数
求解最小质因数
- 同样,也可以使用
埃氏筛,也可以使用欧式筛
def minprime(n):i = 2while i*i <= n:if n % i == 0:return ii += 1# 质数最后会返回自己本身return n
求解一个数的全部的质因数组成
def zuprime(n):ans = []i = 2while i*i <=n:while n % i == 0:ans.append(i)n = n // ii += 1if n > 1:ans.append(n)return ans
求解一个范围内的数的最小质因数
使用欧式筛
,欧式筛的原理就是,每一个数只会被最小质因数所筛选,所以相对于埃氏筛来说具有优势
# 在这里我们初始化全部的数的最小质因数都是1,也包括质数
minprime = [1]*(N+1)
is_prime = [True]*(N+1)
prime = []
for i in range(2,N+1):if is_prime[i]:prime.append(i)for j in prime:if i*j > N :breakis_prime[i*j] = Falsemin_prime[i*j] = j# 保证只能被最小质因数筛选if i % j == 0:break
最大公因数
a和b
的最大公因数表示,可以整除a,b
的最大的公因数,一般使用辗转相除法
进行求解
import math
# 需要求解a,b的最大公因数,可以直接调用这个gcd函数进行求解
ans = math.gcd(a,b)
最小公倍数
a和b
的最小公倍数LCM
可以通过这个与最大公因数的关系进行求解
# lcm(a,b) = a*b // math.gcd(a,b)
组合数
快速幂
- 可以使用
pow
方法求解取模的幂次,类似于快速幂
result = pow(base, exponent, mod) # 计算 (base ** exponent) % mod# 也可以手动实现上述功能
def quick_pow(a, n):ans = 1while n > 0:if n & 1: # 如果该二进制位存在ans = ans * a % MODa = a * a % MODn >>= 1 # n除以2,判断下一个二进制位return ans
容斥定理
错位排序
习题
质数
找素数
- 由于是填空题,直接暴力求解
N = 10**7
prime = []
is_prime = [True]*(N+1)
for i in range(2,N+1):if is_prime[i]:prime.append(i)for j in range(i*2,N+1,i):is_prime[j] = False
if len(prime) > 10**5 +2 :print(prime[10**5+1])
# 1299743
LCM
报数游戏
报数游戏
- 很明显,这个题目不可能会让你从一开始就进行大范围的暴力求解
- 所以还是考虑在小范围之内
打表找规律
ans = []
for i in range(1,10**3+1):if i % 20 == 0 or i % 24 ==0:ans.append(i)
print(ans)
# 输出情况
[20, 24, 40, 48, 60, 72, 80, 96, 100, 120, 140, 144, 160, 168, 180, 192, 200, 216, 220, 240, 260, 264, 280, 288, 300, 312, 320, 336, 340, 360,····]
- 即使在
打表
之前,我们就应该想到,这个找的是20或者24
的倍数,那么他们的倍数在什么时候会重合?这里就回到了这个LCM
的问题,我们可以发现LCM(20,24)=120
,所以对于打表之后的输出找规律,发现,刚好120范围就会有10个数字,类似于这个进制一样,我们只需算出n是10个多少倍数,然后再对应余数找到这个对应的基数,后面再乘再+即可
num = [20, 24, 40, 48, 60, 72, 80, 96, 100, 120]
print(202420242024//10)
# 答案是 20242024202
print(202420242024%10)
# 答案是 4print(120*20242024202+48)
# 答案是 2429042904288
快速幂
数字诗意
数字诗意
- 首先的思考,由于数字的范围十分大,所以考虑
还是找规律
,(其实数据范围较大的时候,就得考虑这个数字规律的问题,一般有幂次,循环规律等
) - 当然,还是老方法,通过
打表
进行求解,但是如何打表就成为我们现在应该考虑的问题! 暴力也是一种学问!
:我们可以从1开始逐一枚举连续的和的开始位置,再枚举向右的位置
notres = []def check(num):# 枚举开始位置for i in range(1,num):ans = 0# 枚举结束的位置for j in range(i,num):ans += j if ans > num:breakelif ans == num:return True
直接暴力求解是可以通过
30%
的测试用例的
- 但是我们可以把打表的结果输出找规律!
# notres 数组如下
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192]
# 可以看到都是2的幂次,所以可以得到是2的幂次都是不满足的
- 现在的任务转化为这个
快速求解出10^16那么大的一个范围内的2的幂次的值,然后存储起来
,那么大的范围的一个幂次的问题,直接转化为这个快速幂
的问题
# 10**16
notres = []
i = 0
# python直接调用这个pow函数进行求解
while pow(2,i) <= 10**16:notres.append(pow(2,i))i += 1
- 两个代码相互结合,就可以通过全部的测试用例
import os
import sys# 请在此输入您的代码notres = []# 10**16
notres = []
i = 0
while pow(2,i) <= 10**16:notres.append(pow(2,i))i += 1n = int(input())
a = list(map(int,input().split()))
cou = 0
for nu in a:if nu in notres:cou+=1
print(cou)
组合数与错位排序
小蓝与钥匙
小蓝与钥匙
- 很容易看出来这是一个
错位排序
的问题,直接套公式dp[i] = (i-1)*(dp[i-1]+dp[i-2])
- 题目求解的是这个方案数,我们得在
28个孩子中先选择14个孩子,作为错位排序的对象,剩余的就正常对应
,所以这个还考察了这个组合数
的问题
import os
import sys# 请在此输入您的代码# 错位排序+组合数
# 从28个孩子中选出14个孩子的方案数乘剩余14个错位排序的方案dp = [0]*15
dp[1] ,dp[2] = 0,1
for i in range(3,15):dp[i] = (i-1)*(dp[i-1]+dp[i-2])# 从28个孩子中选出14个孩子,28! // (14!*14!)tmp1 ,tmp2 = 1,1
for i in range(1,29):tmp1 *= i if i <= 14:tmp2 *= i
zu = int(tmp1 / (tmp2*tmp2))
print(dp[14]*zu)
# 答案是 1286583532342313400
同余
取模
取模
- 其实题目中的m的范围并没有那么大,我们直接采用暴力的做法即可
import os
import sys# 请在此输入您的代码# 取模,是否存在?
# 直接暴力求解
def check(num,m):store = set()for i in range(1,m+1):tmp = num % i if tmp in store:return Trueelse:store.add(tmp)return FalseT = int(input())
for _ in range(T):n,m = map(int,input().split())if check(n,m):print("Yes")else:print("No")
相关文章:
蓝桥杯 之 数论
文章目录 习题质数找素数 LCM报数游戏 快速幂数字诗意 组合数与错位排序小蓝与钥匙 同余取模 数论,就是一些数学问题,蓝桥杯十分喜欢考察,常见的数论的问题有:取模,同余,大整数分解,素数&#x…...
无法写入文件:(FileSystemError): Error: EPERM: operation not permitted, open...)
问题分析: 当我想在Visual Studio Code中编写文件时,出现无法写入文件的错误,发现是权限的问题 解决办法: 右键应用图标 → 以管理员身份运行就可以了...
Java爬虫抓取B站视频信息
依赖 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.17.2</version> <!-- 最新版可去官网查看 --></dependency>编码 public static List<VideoDto> parseSearchPage(Str…...
Sql Server数据迁移易错的地方
背景:之前一直台式机,毕业准备答辩了,要将代码搬到笔记本运行才方便些。这个Sql数据弄过来搞了好几个小时 还原备份报错:媒体簇的结构不正确。SQL Server 无法处理此媒体簇。 解决:升级到sql server版本比备份的那个高…...
七、服务器远程桌面报错
🌻🌻目录🌻🌻 一、远程桌面报错-用户账户限制(例如,时间限制)会阻止你登录。 一、远程桌面报错-用户账户限制(例如,时间限制)会阻止你登录。 原因是被远程的系…...
JAVA 之「优先队列」:大顶堆与小顶堆的实现与应用
Java 优先队列:大顶堆与小顶堆的实现与应用 文章目录 Java 优先队列:大顶堆与小顶堆的实现与应用一、什么是优先队列和堆?1. 优先队列2. 堆 二、Java PriorityQueue 基本用法1. 默认小顶堆示例代码输出 2. 实现大顶堆示例代码输出 三、大顶堆…...
压缩壳学习
壳是什么 壳就是软件的一个保护套,防止软件被进行反编译或被轻易地修改。 其作用就是为了保护软件。 常见的大类壳有压缩壳、加密壳、VM 壳的分类。 压缩壳顾名思义就是用来减小软件的文件大小的;加密壳,通过加密软件来保护软件ÿ…...
VRRP配置双出口ipsec隧道建立。
背景:在做毕设时,发现规划的不是那么合理,vrrp主备切换后,ipsec隧道并没有跟着切换到与备防火墙建立隧道,这是因为配置了双出口,路由的设计导致vrrp主备切换ipsec隧道没有跟着切换。 fw1为主,fw…...
机器学习——Numpy的神奇索引与布尔索引
在 NumPy 中,神奇索引(Fancy Indexing) 和 布尔索引(Boolean Indexing) 是两种强大的索引方式,用于从数组中提取特定元素或子集。以下是它们的详细说明和示例: 1. 神奇索引(Fancy In…...
Linux:进程间通信
文章目录 前言一、进程间通信介绍1.1 进程间通信的目的1.2 进程间通信的发展与分类 二、管道2.1 匿名管道原理2.2 通信管道会出现的情况和特性(重要)2.3 命名管道2.3.1 命名管道与匿名管道的区别 三、system V3.1 共享内存原理3.2 键值3.2.1 键值生成原理…...
Mysql配套测试之查询篇
🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 条件查询简单测试: 1.查询英语成绩不及格的同学(<60) 2…...
基于SSM框架的汽车租赁平台(源码+lw+部署文档+讲解),源码可白嫖!
摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,汽车租赁平台当然不能排除在外。汽车租赁平台是在实际应用和软件工程的开发原理之上,运用Java语言以及SSM框架进行开发&#x…...
常考计算机操作系统面试习题(三下)
20. 请求页式存储管理系统缺页率计算 题目: 假设一个作业的页面走向为 1、2、3、4、1、2、5、1、2、3、4、5,当分配给该作业的物理块数分别为 3 和 4 时,计算采用下述页面置换算法的缺页率: (1) 先进先出(FIFO&…...
Spring IOC核心详解:掌握控制反转与依赖注入
文章目录 前言一、IOC核心思想二、IOC容器实现1.核心接口:2.XML配置范例 三、Bean管理实践1.创建对象(1)基于xml方式创建对象(2)用注解的方式创建对象 2.依赖注入(1)基于xml方式注入属性基础类型…...
Servlet、HttpServletRequest、HttpServletResponse、静态与动态网页、jsp、重定向与转发
DAY15.2 Java核心基础 JavaWeb 要想通过浏览器或者客户端来访问java程序,必须通过Servlet来处理 没有Servlet,java是无法处理web请求的 Web交互: 接收请求HttpServletRequest:可以获取到请求的信息,比如uri&#…...
Linux 内核源码阅读——ipv4
Linux 内核源码阅读——ipv4 综述 在 Linux 内核中,IPv4 协议的实现主要分布在 net/ipv4/ 目录下。以下是一些关键的源文件及其作用: 1. 协议栈核心 net/ipv4/ip_input.c:处理接收到的 IPv4 数据包(输入路径)。net…...
组合总和 II:去重逻辑深度解析
组合总和 II:去重逻辑深度解析 在算法中,解决“组合总和 II”这类问题时,去重往往是最具挑战性的一环。如何避免重复组合,同时保证所有组合的唯一性,是实现高效算法的关键。今天,我们就来深度解析组合总和…...
蓝桥杯备考:二分答案之路标设置
最大距离,找最小空旷指数值,我们是很容易想到用二分的,我们再看看这个答案有没有二段性 是有这么个二段性的,我们只要二分就行了,但是二分的check函数是有点不好想的,我们枚举空旷值的时候,为了…...
[HY000][1366] Incorrect string value: ‘å¼ ä¸‘ for column ‘name‘ at row 1
常见原因 字符集不兼容 插入的数据包含当前字符集(如 latin1)不支持的特殊字符(如中文、Emoji 等)。 表、列或连接的字符集未正确配置为支持目标字符(如未使用 utf8mb4)。 客户端/服务端编码不一致 客户…...
什么是C++对象之间的view proxies
在C中,view proxies 是一种轻量级的对象,用于提供对另一个对象的间接访问或视图,而不直接拥有或管理该对象的数据。它们通常用于简化对复杂数据结构的访问,或在不需要复制数据的情况下提供特定的视图。 1. View Proxies 的核心概…...
MyBatis参数赋值技巧:#{} 和 ${} 的区别与实践
目录 一、前言二、 #{} 和${} 的使用方法和区别2.1 #{}使用方法2.2 ${}使用方法2.3#{} 和 ${} 的主要区别2.4使用建议 三、总结 一、前言 在 MyBatis 中,#{} 和 ${} 都用于在 SQL 语句中绑定参数,但它们在具体实现和安全性方面有所不同。理解它们的区别…...
5-1 使用ECharts将MySQL数据库中的数据可视化
方法一:使用Python Flask框架搭建API 对于技术小白来说,使用ECharts将MySQL数据库中的数据可视化需要分步骤完成。以下是详细的实现流程: 一、技术架构 后端服务:使用Python Flask框架搭建API(简单易学ÿ…...
协程的调度的对称与非对称
下图表示的就是对称协程,进入到该协程之后只能有一个操作就是yield,把cpu让回给调度器; 下图表示非对称协议,可以有两个操作,就是resume和yield,从哪里resume的,yield就会回到该位子;...
C# 中比较实用的关键字,基础高频面试题!
前言 在C#编程中关键字是构建逻辑和实现功能的基石,它承载着编程语言的语法规则和编程智慧。熟练掌握这些基础高频关键字对提升编程能力和面试表现至关重要,它们是日常开发和解决复杂问题的关键。 DotNetGuide 全面的C#/.NET/.NET Core学习、工作、面试指…...
文献分享: XTR——优化Token级检索的高效多向量模型
原文章 文章目录 1. XTR \textbf{1. XTR} 1. XTR原理 1.1. \textbf{1.1. } 1.1. 导论 1.2. XTR \textbf{1.2. XTR} 1.2. XTR的训练和推理 2. \textbf{2. } 2. 实验与分析 2.1. \textbf{2.1. } 2.1. 实验配置与结果 2.2. \textbf{2.2. } 2.2. 结果分析 3. \textbf{3. } 3. 其它分…...
【数据结构】C语言实现树和森林的遍历
C语言实现树和森林的遍历 导读一、树的遍历二、森林的遍历2.1 为什么森林没有后序遍历?2.2 森林中存不存在层序遍历?三、C语言实现3.1 准备工作3.2 数据结构的选择3.3 树与森林的创建3.4 树与森林的遍历3.4.1 先根遍历3.4.2 后根遍历3.4.3 森林的遍历3.5 树与森林的销毁3.6 算…...
《Python深度学习》第七讲:生成式深度学习
在深度学习的世界里,生成式模型是一种非常有趣且富有创造力的技术。它们能够生成全新的内容,比如文本、图像、音乐等,甚至可以创造出从未见过的虚拟世界。这一讲,我们将深入探讨生成式深度学习的核心技术,包括 LSTM 文本生成、DeepDream、神经风格迁移、变分自编码器(VAE…...
Spring的IOC
在现代 Java 开发中,Spring 框架几乎无处不在,特别是其核心的 IOC(Inversion of Control) 容器,几乎所有Spring的功能都与它紧密相关。 一、什么是IOC IOC,全称为 Inversion of Control(控制反…...
常考计算机操作系统面试习题(四)
目录 1. Peterson 算法伪代码 2. 信号量生产者消费者问题分析 3. 注释 Peterson 主函数并分析输出结果 4. 用 fork 创建子进程的程序 1. Peterson 算法伪代码 题目: 写出 Peterson 算法的伪代码。 参考答案: // 定义变量 boolean flag[2]; //…...
Visual Studio Code 连接 SAP ERP 系统
首先确保服务打开 在vscode,在extension安装ABAP remote filesystem,然后打开设置SAP 系统的地址配置 CtrlshiftP 执行代码:AbapFS connect to an ABAP system,可以根据要求一步一步配置。 根据配置。加载系统 也可以直接在extens…...
从报错到成功:Mermaid 流程图语法避坑指南✨
🚀 从报错到成功:Mermaid 流程图语法避坑指南 🚀 🚨 问题背景 在开发文档或技术博客中,我们经常使用 Mermaid 流程图 来可视化代码逻辑。但最近我在尝试绘制一个 Java Stream 转换流程图时,遭遇了以下报错…...
TDengine 中的 show 命令
简介 SHOW 命令可以用来获取简要的系统信息。若想获取系统中详细的各种元数据、系统信息和状态,请使用 select 语句查询 INFORMATION_SCHEMA 数据库中的表, 详见 元数据查询 SHOW APPS SHOW APPS;显示接入集群的应用(客户端)信息。 SHOW …...
博弈论中的均衡精炼:完美贝叶斯均衡、序贯均衡与颤抖手均衡详解
博弈论中的均衡精炼:完美贝叶斯均衡、序贯均衡与颤抖手均衡详解 1. 引言:为什么需要均衡精炼? 在博弈论中,纳什均衡是分析策略互动的核心工具,但其存在一个显著缺陷:无法排除不合理的均衡。例如࿰…...
github代理 | 快速clone项目
代理网址: https://ghproxy.com/ https://ghproxy.com/代理网址: https://ghproxy.com/ 比如需要克隆的项目git地址为:https://github.com/AUTOMATIC1111/stable-diffusion-webui.git git clone https://ghproxy.com/https://github.com/AUTO…...
C语言基础与进阶学习指南(附运行效果图及术语解析)
C语言基础与进阶学习指南(附运行效果图及术语解析) 目录 C语言标准与编译流程CPU与内存基础C语言基础语法数据类型详解变量与内存管理运算符与表达式输入输出函数函数与内存管理指针与内存操作结构体与高级应用 1. C语言标准与编译流程 1.1 C语言标准演…...
【Scrapy】Scrapy教程8——处理子链接
通过前面几篇文章,已经了解了如何去爬取网页内容并存储到数据库,但是目前只是存储了一个页面的内容,现在想要获取每篇文章链接内的文章内容,我们来看看怎么获取。 生成新请求 首先我们肯定要先拿到链接,所以第一步都获取文章标题和链接肯定少不了,然后再爬取获取到到子…...
Python推导式深入解析
引言 Python 以其简洁、高效的语法而备受开发者喜爱,其中推导式(Comprehensions)更是 Python 语法的一大特色。推导式提供了一种简洁明了的方式来创建列表、集合和字典等数据结构,让代码更加紧凑和易读。本文将深入探讨 Python 推…...
在 macOS 上配置 SSH 连接 GitHub
在 macOS 上使用 SSH 连接 GitHub,可以免去每次使用 Git 时输入密码的麻烦,提高开发效率。本文将介绍如何在 macOS 上生成 SSH 密钥并配置 GitHub 进行身份认证。 1. 检查是否已有 SSH 密钥 在终端运行以下命令,检查是否已有 SSH 密钥&#…...
常考计算机操作系统面试习题(二)(中)
目录 24. 操作系统的主要功能有哪些? 25. 文件的属性主要有哪些? 26. 对文件的基本操作主要有哪些? 27. 目录的基本操作有哪些? 28. 目录的逻辑结构有哪些种? 29. 简述银行家算法的Available、Max、Allocation、…...
手机录视频风噪太大?华为Pura X“AI降风噪“太硬核了
你是否也在用手机录像时,比如大海海浪、阅览群山、空旷的原野的时候,呼啸的风总是能沦为刺耳的噪音,让精心构思的镜头,最后因为呼啸的风声最终成为“灾难现场”。传统的解决方式往往陷入两难:物理防风罩影响收音指向性…...
React 事件处理
1. React 事件处理的基本概念 React 事件处理的特点: 驼峰命名法:事件名采用驼峰命名法,如 onClick、onChange。JSX 语法:事件处理函数通过 JSX 传递给元素,如 <button onClick{handleClick}>。合成事件&#…...
搭建React简单项目
一、项目构建 目录结构: 安装脚手架 npm install -g create-react-app // or yarn add -g create-react-app 一、项目版本 1、react:"^18.3.1"; 2、react-router-dom:"^6.23.1"; 3、项目创…...
ROCK 280A-M 工业级电调:高性能无人机动力心脏,重塑严苛场景飞行边界
—— 工业级动力控制系统解决方案 —— 【产品概述】 针对工业级无人机高负载、复杂工况需求,南昌长空科技的ROCK 280A-M 电调以航空级标准打造动力控制中枢。采用工业级控制算法与智能自适应系统,为多旋翼 / 固定翼无人机提供稳定动力支撑,突…...
带你从入门到精通——自然语言处理(十. BERT)
建议先阅读我之前的博客,掌握一定的自然语言处理前置知识后再阅读本文,链接如下: 带你从入门到精通——自然语言处理(一. 文本的基本预处理方法和张量表示)-CSDN博客 带你从入门到精通——自然语言处理(二…...
八股JAVA并发
多线程 线程的创建方式有哪些? 1.继承Thread类 2.实现Runnable接口 3.Callable接口FutureTask 4.线程池 1.继承Thread类 这是最直接的一种方式,用户自定义类继承java.lang.Thread类,重写其run()方法,run()方法中定义了线程执行的具体任务。…...
#include <hello.h> 与 #include “hello.h“的区别
#include <hello.h> 和 #include "hello.h" 在C/C中用于包含头文件,但它们在搜索头文件时的行为有所不同,这可能导致前者找不到头文件的情况。 ### 区别 1. **搜索路径不同** - #include "hello.h":编译器首先…...
PyPDF2简单介绍
PyPDF2 是一个开源的纯 Python 库,用于读取、操作和创建 PDF 文件。它最初是 PyPDF 的改进版,功能更丰富。 安装: bash pip install PyPDF2核心功能 1.合并 PDF 文件 python from PyPDF2 import PdfMergermerger PdfMerger() merger.appe…...
记录flutter编译项目遇到的问题
目录 1.更换flutter版本 2.解压到指定地址 3.在Android Studio配置 问题: Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source! Resolving dependencies... The current Dart SDK version is 3.3.0. Because coach d…...
小米AX6000上安装tailscale
在之前的文章中,已经介绍了如何解锁ax6000的ssh,以及必坑指南。 今天突发奇想,为了不让我的nas天天开着tailscale,所以我想让我的tailscale运行在路由器,这样完美实现穿透。 首先,通过ssh登录ax6000&#x…...
git使用经验(一)
git使用经验(一) 我之前已经下载了别人的代码,我想在此基础上进行修改,并移动到自己的私有仓库,方便上传到自己的私有仓库自己进行版本控制 git clone下来别人的代码,删除有关git的隐藏文件 进入到自己的…...