蓝桥杯 之 数论
文章目录
- 习题
- 质数
- 找素数
- 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…...
SpringBoot的启动原理?
大家好,我是锋哥。今天分享关于【SpringBoot的启动原理?】面试题。希望对大家有帮助; SpringBoot的启动原理? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot的启动原理主要是通过 SpringApplication 类来…...
从零开始搭建向量数据库:基于 Xinference 和 Milvus 的文本搜索实践
引言 在 AI 和大数据时代,向量数据库正成为处理非结构化数据(如文本、图像)的利器。最近,我尝试用 Xinference 和 Milvus 搭建一个简单的文本搜索系统,从读取本地文本文件到实现交互式查询和高亮显示匹配结果…...
音视频系列——Websockets接口封装为Http接口
模型服务示例:实时语音转文本服务 本示例展示一个支持双协议(WebSocket流式接口HTTP同步接口)的语音转文本模型服务,并提供将WebSocket接口封装为HTTP接口的代码实现。 一、服务架构设计 #mermaid-svg-nw0dMZ4uKfS4vGZR {font-fa…...
scrapy入门(深入)
Scrapy框架简介 Scrapy是:由Python语言开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据,只需要实现少量的代码,就能够快速的抓取。 新建项目 (scrapy startproject xxx):新建一个新的…...
docker模拟Dos_SYN Flood拒绝服务攻击 (Ubuntu20.04)
目录 ✅ 一、实验环境准备(3 个终端) 👉 所以最终推荐做法: 2️⃣ 配置 seed-attacker 为攻击者,开启 telnet 服务: 3️⃣ 配置 victim-10.9.0.5 为受害者服务器,开启 telnet 客户端并监听&…...
使用 Ansys Fluent 评估金属管道腐蚀
金属管道的维护和完整性在石油和天然气、石化和供水等各个行业中都至关重要。腐蚀对这些管道构成了重大威胁,可能导致泄漏、结构故障和环境危害。Ansys Fluent 提供了一个强大的平台来建模和分析金属管道腐蚀。 腐蚀是一种自然过程,金属材料会因与环境发…...
firefly经典蓝牙和QProcess、QFileSystemWatcher记录
QProcess 默认不会启动一个 shell 来解析命令,而是直接调用操作系统的系统调用来启动外部程序。也就是通过fork一个子线程或者exec一个子进程来执行命令。 QProcess的参数模式 QProcess 需要明确指定命令的可执行文件路径或参数列表。 如果命令是一个可执行文件的路径…...
基于PySide6的CATIA自动化工具开发实战——空几何体批量清理系统
一、功能概述 本工具通过PySide6构建用户界面,结合PyCATIA库实现CATIA V5的自动化操作,提供两大核心功能: 空几何体清理:智能识别并删除零件文档中的无内容几何体(Bodies)空几何图形集清理࿱…...
Blender配置渲染设置并输出动画
在Blender中,渲染设置和渲染动画的选项位于不同的面板中。以下是具体步骤: 渲染设置 渲染设置用于配置输出格式、分辨率、帧率等参数。 打开右侧的 属性面板(按 N 键可切换显示)。 点击 “输出属性” 选项卡(图标是…...
Spring 声明式事务应该怎么学?
1、引言 Spring 的声明式事务极大地方便了日常的事务相关代码编写,它的设计如此巧妙,以至于在使用中几乎感觉不到它的存在,只需要优雅地加一个 Transactional 注解,一切就都顺理成章地完成了! 毫不夸张地讲ÿ…...
C++11 引入了的新特性与实例说明
C11 引入了许多重要的新特性,以下是一些关键特性及其对应的示例代码,用于体现这些特性的用法和优势。 1. 自动类型推导 (auto) auto 关键字允许编译器自动推导变量的类型,简化代码书写。 #include <iostream> #include <vector>…...
二手Mac验机过程
1.1 外观检查 螺丝是否拧过螺丝 1.2 关于本机中 序列号,盒子序列号,机器背部 核对参数 https://checkcoverage.apple.com/coverage 1.3 检查apple ID与查找 1 登出 iCloud、iTunes、FaceTime、iMessage 在 Mac 上打開「訊息」應用程式,從上方…...
从 0 到 1 掌握鸿蒙 AudioRenderer 音频渲染:我的自学笔记与踩坑实录(API 14)
最近我在研究 HarmonyOS 音频开发。在音视频领域,鸿蒙的 AudioKit 框架提供了 AVPlayer 和 AudioRenderer 两种方案。AVPlayer 适合快速实现播放功能,而 AudioRenderer 允许更底层的音频处理,适合定制化需求。本文将以一个开发者的自学视角&a…...
Android 13深度定制:SystemUI状态栏时间居中显示终极实战指南
一、架构设计与技术解析 1. SystemUI状态栏核心布局机制 层级结构 mermaid 复制 graph TDPhoneStatusBarView --> StatusBarContents[status_bar_contents]StatusBarContents --> LeftLayout[status_bar_left_side]StatusBarContents --> ClockLayout[Clock控件]Left…...
支持多系统多协议且可提速的下载工具
在网络下载需求日益多样的当下,一款好用的下载器能极大提升效率。今天就给大家介绍 AB Download Manager,它免费又开源,能适配 Windows 和 Linux 系统,带来超便捷的下载体验。 AB Download Manager 采用先进的多线程技术…...
【leetcode hot 100 22】括号生成
解法一:(回溯法)用两个整数记录左右括号数,以在回溯过程中保证先生成左括号,且左右括号数不能大于n。 class Solution {public List<String> generateParenthesis(int n) {List<String> result new Arra…...
如何在 HTML 中创建一个有序列表和无序列表,它们的语义有何不同?
大白话如何在 HTML 中创建一个有序列表和无序列表,它们的语义有何不同? 1. HTML 中有序列表和无序列表的基本概念 在 HTML 里,列表是一种用来组织信息的方式。有序列表就是带有编号的列表,它可以让内容按照一定的顺序呈现&#…...
【武汉·4月11日】Parasoft联合光庭信息研讨会|邀您共探AI赋能新机遇
Parasoft联合光庭信息Workshop邀您共探AI赋能新机遇 AI浪潮已至,你准备好了吗? 在智能网联汽车飞速发展的今天,AI技术正以前所未有的速度重塑行业生态。如何把握AI机遇,赋能企业创新? 4月11日,自动化软件…...
PHP PSR(PHP Standards Recommendations)介绍
PHP PSR(PHP Standards Recommendations)是 PHP 社区制定的一系列标准化规范,旨在统一 PHP 代码的编写方式、接口设计和开发实践,以提高代码的可读性、可维护性和互操作性。以下是核心 PSR 标准的解读和具体使用方法: …...
闻所闻尽:穿透声音的寂静,照见生命的本真
在《楞严经》的梵音缭绕中,"闻所闻尽"四个字如晨钟暮鼓,叩击着每个修行者的心门。这个源自观世音菩萨耳根圆通法门的核心概念,既是佛门修行的次第指引,更蕴含着东方哲学对生命本质的终极叩问。当我们穿越时空的帷幕&…...
F28335进入非法中断ILLEGAL_ISR定位
在非法中断函数中,再调用一个函数接口,比如save_illegal_error(),然后在save_illegal_error中实现如下代码: g_illegal_isr_sp 0;(这个是全局变量,需要先定义 ) asm( “ MOVW ACC, SP\n” " MOVL …...
PreparedStatement 和 Statement 从 功能、性能、安全性、适用场景 等维度详细对比分析
以下是 PreparedStatement 和 Statement 的对比分析,从 功能、性能、安全性、适用场景 等维度详细说明: 1. 核心区别 特性PreparedStatementStatement定义预编译的 SQL 语句,支持参数化查询执行静态 SQL 语句,不支持参数占位符安…...
VLAN综合实验报告
一、实验拓扑 网络拓扑结构包括三台交换机(LSW1、LSW2、LSW3)、一台路由器(AR1)以及六台PC(PC1-PC6)。交换机之间通过Trunk链路相连,交换机与PC、路由器通过Access或Hybrid链路连接。 二、实验…...
使用 Docker 部署 mysql 应用
使用 Docker 部署 环境搭建 Docker 安装文档 创建容器 在系统任意位置创建一个文件夹(可选) mkdir -p /opt/docker/mysql && cd /opt/docker/mysqlmkdir ./{conf,data,logs}搜索 & 拉取镜像 docker search mysql docker pull mysql:5.6启…...
美团Leaf分布式ID实战:深入解析雪花算法原理与应用
📖 前言 在分布式系统中,全局唯一ID生成是保证数据一致性的核心技术之一。传统方案(如数据库自增ID、UUID)存在性能瓶颈或无序性问题,而美团开源的Leaf框架提供了高可用、高性能的分布式ID解决方案。本文重点解析Leaf…...
Midjourney使用教程—2.作品修改
当您已生成第一张Midjourney图像的时候,接下来该做什么?了解我们用于修改图像的工具!使用 Midjourney 制作图像后,您的创意之旅就不会止步于此。您可以使用各种工具来修改和增强图像。 一、放大操作 Midjourney每次会根据提示词…...
【人工智能】LM Studio 的 GPU 加速:释放大模型推理潜能的极致优化
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着大语言模型(LLM)的广泛应用,其推理效率成为限制性能的关键瓶颈。LM Studio 作为一个轻量级机器学习框架,通过 GPU 加速显著提升了大…...
S32K144入门笔记(十七):PDB的API函数解读
文章目录 1. SDK中的函数2. API函数的释义 1. SDK中的函数 在SDK中并没有转为PDB设置专门的PAL驱动,在基本的DRIVER库中一共有21个API函数,本文将解读这些函数的功能。 2. API函数的释义 void PDB_DRV_Init(const uint32_t instance,const pdb_timer_…...
3.5 平滑滤波
请注意:笔记内容片面粗浅,请读者批判着阅读! 一、引言 平滑空间滤波是数字图像处理中用于降低噪声和模糊细节的核心技术,常用于图像预处理或特定场景下的视觉效果优化。其核心思想是通过邻域像素的加权平均或统计操作,抑制高频噪…...
