纯小白蓝桥杯备赛笔记--DAY4(数学数据结构图论)
文章目录
- 数学
- 质因数分解
- 辗转相除法求最大公约数
- 最小公倍数:
- 快速幂
- 乘法逆元
- 费马小定理
- 逆元
- 乘法逆元
- 素数判定与埃式筛法
- 朴素素数判定法
- 埃式筛法
- 图论
- 并查集T3:真题--合根植物
- Dijkstra
- Floyd
- 基础算法
- 递归,循环,前缀和,差分
- STL
数学
质因数分解
int reduce(int prime[],int pn,int n,int rest[]){int i,k=0;for(i=0;i<pn;i++){if (n==1) break;if (prime[i]*prime[i]>n) {rest[k++]=n;break;}while(n%prime[i]==0){n/=prime[i];rest[k++]=prime[i];}}return k;}
解析:
这段代码是一个名为reduce的函数,它接受四个参数:一个整数数组prime[],一个整数pn表示数组的长度,一个整数n和一个整数数组rest[]。函数的目的是将整数n分解为质因数,并将这些质因数存储在rest[]数组中。
函数首先初始化两个变量i和k,其中i用于循环遍历prime[]数组,k用于记录rest[]数组的索引。
接下来,函数使用一个for循环遍历prime[]数组。在每次迭代中,它首先检查n是否等于1,如果是,则跳出循环。然后,它检查当前质数的平方是否大于n,如果是,则将n添加到rest[]数组中,并跳出循环。
如果当前质数的平方不大于n,则进入一个while循环。在这个循环中,只要n能被当前质数整除,就将n除以当前质数,并将当前质数添加到rest[]数组中。这个过程会一直重复,直到n不能被当前质数整除为止。
最后,函数返回k,即rest[]数组中的元素个数。
#include<bits/stdc++.h>
using namespace std;int main()
{int n,i;cin>>n;cout<<n<<"=";for(i=2;i<=n;i++){while(n!=i){if(n%i==0){cout<<i<<"*";n=n/i;}elsebreak;}}cout<<n<<endl;return 0;
}
辗转相除法求最大公约数
inline int gcd(int a,int b)
{if(a%b==0)return b;elsereturn (gcd(b,a%b));
}
- 简单写法:
int gcb(int a,int b){return b==0 ? a:gcb(b,a%b);}
最小公倍数:
int lcm(int a,int b){return a/gcd(a,b)*b;//防溢出 , 很妙啊 ,大家可以记一下
}
快速幂

- 模板
int qmi(int a,int b,int p)//对p取模
{int res=1;while(b)//只要b不为0,就一直迭代下去 {if(b&1)res=res*a%p;//b为奇数,乘一个a到答案里a=a*a%p,b>>=1;//底数平方,指数除以2 }return res; }
- 例题:数的幂次–1181
#include<bits/stdc++.h>
using namespace std;using ll =long long;ll qmi(ll a,ll b,ll p)//对p取模
{ll res=1;while(b)//只要b不为0,就一直迭代下去 {if(b&1)res=res*a%p;//b为奇数,乘一个a到答案里a=(ll)a*a%p,b>>=1;//底数平方,指数除以2 }return res; } int main(){int t;cin>>t;while(t--){ll n,m,p;cin>>n>>m>>p;cout<<qmi(n,m,p)<<endl;}return 0;}
乘法逆元
费马小定理

逆元

乘法逆元
- 例题1:求乘法逆元
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int t,n;
ll p=1e9+7;
ll qsm(ll a,ll b)
{ll res=1;while(b){if(b&1) res=res*a%p;a=a*a%p;b>>=1;}return res%p;
}
ll inv(ll x)
{return qsm(x,p-2);
}
int main()
{cin>>t;while(t--){cin>>n;cout<<inv(n)<<endl;}return 0;
}
- 例题2:获胜的概率–3932
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll p=1e9+7;
ll kmi(ll a,ll b)
{ll res=1;while(b){if(b&1) res=res*a%p;a=a*a%p;b>>=1;}return res%p;}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n,k;cin>>n>>k;if(k==0){cout<<1<<endl;for(int i=2;i<=n;i++) cout<<0<<endl;}else if(k&1){for(int i=1;i<=n;i++){if(i&1) cout<<0<<endl;else cout<<kmi(n/2,p-2)<<endl;}}else{for(int i=1;i<=n;i++){if(i&1) cout<<kmi((n+1)/2,p-2)<<endl;else cout<<0<<endl;}}return 0;}
素数判定与埃式筛法
朴素素数判定法

- 例题:疑似素数-3334
#include<bits/stdc++.h>
using namespace std;
//求和
int f(int x)
{int res=0;while(x)res+=x%10,x/=10;return res;}
bool isPrime(int n)
{if(n<2)return false;for(int i=2;i<=n/i;i++){if(n%i==0)return false;}return true;}
int main()
{int n;cin>>n;int ans=0;for(int i=1;i<=n;i++){if(isPrime(f(i)))ans++;}cout<<ans<<endl;
}
埃式筛法

bool vis[N];
vis[0]=vis[1]=true;//被筛掉了
for(int i=2;i<=n;i++)
{if(!vis[i])//如果i没有被筛掉,那么进行枚举for(int j=2*i;j<=n;j+=i)//枚举倍数 ,每次j变成i的倍数vis[j]=ture; }
- 例题2:小明的素数对–3205
#include<bits/stdc++.h>
using namespace std;
const int N=1e7;
bool shai[N];vector<int> vec;//将素数筛中杂乱的质数变成排列有序的一个集合,用vector
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n,ans=0;cin>>n;shai[0]=shai[1]=1;for(int i=2;i<=n;i++){if(!shai[i]){vec.push_back(i);for(int j=2*i;j<=n;j+=i) shai[j]=1;}}for(int i=0;i<vec.size();i++)for(int j=i+1;j<vec.size();j++){if(!shai[vec[j]-vec[i]]) ans++;}cout<<ans;return 0;}
图论
并查集T3:真题–合根植物
- 并查集模版题:
- 注意:不要调用string库。
- 什么是并查集:处理不相交集合的合并问题。
- 用途:求连通子图,求最小生成树的Kruskal算法和求最近公共祖先等。
- 操作:
-
初始化:

-
查询与合并:

-
查询时对路径进行压缩:

-
例题

-
#include<cstdio>
#include<cstdlib>
using namespace std;
// 开始的时候定义数组
#define MAXN 20001
int fa[MAXN];
//最好不要这样定义// 初始化
void init(int n)
{for(int i=0;i<=n;i++)fa[i]=i;}
// 查询 int find(int x){
// 递归出口if(x==fa[x])return x;else{fa[x]==find(fa[x]);return fa[x];}}
// 合并
void unionn(int i,int j)
{int i_fa=find(i);// 找到i的祖先 int j_fa=find(j);// 找到j的祖先 fa[i_fa]=j_fa ;//i的祖先指向j的祖先 }
// 写主函数
int main()
{int m,n,x,y,q;scanf("%d",&n);init(n);// 初始化这个数组scanf("%d",&m); //有m行for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);unionn(x,y);} scanf("%d",&q);// 输入q行 for(int i=1;i<=q;i++){scanf("%d%d",&x,&y);if(find(x)==find(y))printf("YES\n");elseprintf("NO\n");}return 0; }
- 合根植物题解:这道题只有一个返回值,所以查询的时候注意不要增加一个返回值了。
#include<stdio.h>
int fa[1000005];
//初始化void init(int n){for (int i=1;i<=n;i++)fa[i] = i;}// 查询
int find(int x)
{if (fa[x] != x){int sx = find(fa[x]);fa[x] = sx;}return fa[x];
}// 合并void unionn(int i,int j){int i_fa=find(i);int j_fa=find(j);fa[i_fa]=j_fa;}
int main(void)
{int m,n,q;scanf("%d%d%d",&m,&n,&q);init(m*n); int x,y;for(int i=0;i<q;i++){scanf("%d%d",&x,&y);unionn(x,y);}//计数器的设置int ans=0;for(int i=1;i<=m*n;i++){if(i==fa[i]){//一个数等于链条的祖先ans++; } }printf("%d\n",ans);return 0;
}
Dijkstra


Floyd

基础算法
递归,循环,前缀和,差分
添加链接描述
STL
添加链接描述

相关文章:
纯小白蓝桥杯备赛笔记--DAY4(数学数据结构图论)
文章目录 数学质因数分解辗转相除法求最大公约数最小公倍数:快速幂乘法逆元费马小定理 逆元乘法逆元素数判定与埃式筛法朴素素数判定法埃式筛法 图论并查集T3:真题--合根植物DijkstraFloyd 基础算法递归,循环,前缀和,差分STL 数学…...
python 最简单的网页爬虫
import requests url"https://news.ifeng.com/c/8OZc7eV01sM" rrequests.get(url) print(r.status_code) print(r.iter_lines()) # 获取响应的内容 content r.text# 打印网页内容 print(content) # responser.json() # print(response) 爬虫知识讲解: …...
二叉树-数据结构
二叉树-数据结构 二叉树是属性结构的一个重要类型。 如下图二叉树形状 二叉树特征如下: 1.二叉树由 n(n > 0) 个节点组成 2.如果 n 为 0,则为空树 3.如果 n 1,则只有一个节点称为根节点(root) 4.每个节点最多有两个节点,节…...
ansible使用shell模块的环境变量问题
在本机写了一个shell脚本,关于操作mysql的,在本机执行脚本可以正常操作数据库,脚本运行正常。 但是使用ansible ansible -i ./hosts test_teledb -m copy -a "src/etc/ansible/scripts/check.sh dest/tmp"ansible -i ./hosts test…...
ChatGPT论文写作指南:写出引人注目的论文
ChatGPT无限次数:点击直达 ChatGPT论文写作指南:写出引人注目的论文 作为一名有着10年经验的专业CSDN网站原创文章优质创作者,在当今的信息爆炸时代,论文写作的重要性愈发显现。如何能够写出引人注目的论文,吸引读者的眼球并获得…...
ARM64架构栈帧回溯
文章目录 前言一、栈帧简介二、demo演示 前言 请参考:ARM64架构栈帧以及帧指针FP 一、栈帧简介 假设下列函数调用: funb() {func() }funa() {funb() }main() {funa() }main函数,funa函数,funb函数都不是叶子函数,其…...
LangChain:大型语言模型(LLMs)-- 基础知识
1、LangChain的调用大型语言模型模块的介绍 LangChain是一个强大的框架,旨在通过调用大型语言模型(LLM)来开发各种语言驱动的应用程序。在LangChain中,LLM不仅仅是一个简单的模型调用,而是一个复杂链条中的关键部分。…...
总分410+专业130+国防科技大学831信号与系统考研经验国防科大电子信息与通信工程,真题,大纲,参考书。
好几个学弟催着,总结一下我自己的复习经历,希望大家复习少走弯路,投入的复习正比换回分数。我专业课831信号与系统130(感觉比估分要低,后面找Jenny老师讨论了自己拿不准的地方也没有错误,心里最近也这经常回…...
chatgpt Team 4.0共享合租账号的新方式
为了更好地满足工作需求,我订阅了GPT PLUS会员,但我发现,4.0每三小时问答40次经常吃灰,而且每月近200元的费用让我感到有点肉痛。 于是,我开始寻找有没有什么替代品。在逛某论坛的时候,发现了一个共享Team…...
类和对象二
一、运算符重载 为了使自定义类型可以使用加减等运算符,CPP提供了一个功能叫运算符重载。 关键字:operator操作符 运算符重载最好定义在类对象里,这也可以避免访问不到私有成员的问题。 代码演示: 在类里定义之后,…...
GD32 HID键盘矩阵键盘发送数据时,一直发送数据问题处理
这个问题找了两三天,开始并不认为是示例程序的问题,只是感觉是自己代码问题。 这个解决流程大概是: 先调好矩阵键盘=> 调用发送函数。 就是因为调用时,一直发送数据,我也在按键抬起做了操作,始终不行。 最后,发现时示例代码中有个 空闲中断 引起的。 udev->reg…...
小程序地理位置权限申请+uniapp调用uni.getLocation
文章目录 一、小程序地理位置权限申请二、uniapp调用uni.getLocation 一、小程序地理位置权限申请 需要确保小程序类目已经填写 点击左侧导航栏找到最后的“设置”——“基本设置”——“前往填写” 在开发管理——接口设置——地理位置中可以看到: 即可点击想要申…...
后台权限控制及动态路由
需求 后台系统需要能实现不同的用户权限可以看到不同的功能。 用户只能使用他的权限所允许使用的功能。 功能设计 之前在我的SpringSecurity的课程中就介绍过RBAC权限模型。没有学习过的可以去看下 RBAC权限模型 。这里我们就是在RBAC权限模型的基础上去实现这个功能。 表分…...
云计算:Linux 部署 OVS 集群(控制端)实现OpenFlow
目录 一、实验 1.环境 2.Linux 部署 OVS 集群(控制端) 3.控制端对接服务端OVS网元 4.服务端OVS添加流表 5.服务端删除OVS 二、问题 1. ODL如何查找已安装插件 2.查看流表显示不全 3.如何删除OVS流表 一、实验 1.环境 (1) 主机 表1 宿主机 主…...
使用/api/put保存数据到OpenTSDB,报204错误
错误信息 HttpResponseProxy{HTTP/1.1 204 No Content [Content-Type: application/json; charsetUTF-8, Content-Length: 0]} 错误原因 在OpenTSDB中,使用/api/put保执行写入操作,得到204响应,表示已经成功写入数据库。...
Open3D kmeans聚类(马氏距离,Python版本)
文章目录 一、简介二、算法步骤三、代码实现四、实现效果参考资料一、简介 在诸多的聚类方法中,K-Means聚类方法是属于“基于原型的聚类”(也称为原型聚类)的方法,此类方法均是假设聚类结构能通过一组原型刻画,在现实聚类中极为常用。通常情况下,该类算法会先对原型进行初始…...
python抠图程序
import cv2 import numpy as np def color_threshold(image, lower, upper): hsv_image cv2.cvtColor(image, cv2.COLOR_BGR2HSV) mask cv2.inRange(hsv_image, lower, upper) result cv2.bitwise_and(image, image, maskmask) return result # 读取图片…...
Android13 CameraServer启动流程
代码入口 frameworks/av/camera/cameraserver 里面包含了四个文件 我们先来看看Android.bp的内容 package {// See: http://go/android-license-faq// A large-scale-change added default_applicable_licenses to import// all of the license_kinds from "frameworks_a…...
如何升级node.js版本
升级Node.js可以通过多种方式来完成,以下是四种常见的方法: 方法一:使用Node.js官方安装程序 访问Node.js的官方网站,下载对应你操作系统的最新版本安装程序。通常,你可以 https://nodejs.org/en/download 找到你需…...
Excel---一个工作簿中的多个sheet合并成一个PDF
0 Preface/Foreword 1 操作方法 1.1 方法一 文件》 导出 》创建PDF/XPS 》 选项 》发布内容 》“整个工作簿” 1.2 方法二 文件》 打印》 打印机选项中,选择一种PDF阅读器 》设置选项中,选择打印整个工作簿。...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
