【备战蓝桥杯】2024蓝桥杯赛前突击省一:基础数论篇

2024蓝桥杯赛前突击省一:基础算法模版篇

基础数论算法回顾

判断质数(试除法)

时间复杂度O(sqrt(n))

static int is_prime(int n){if(n<2) return 0;for (int i=2;i<=n/i;i++){if(n%i==0) return 0;}return 1;
}

质因数分解

时间复杂度O(sqrt(n))

static Map<Integer,Integer> mp = new TreeMap<>();//TreeMap有序
static void divide(int n){for(int i=2;i<=n/i;i++){int cnt = 0;//java里不能mp[i]++,所以用变量cnt存储,再赋值while(n%i==0){n/=i;cnt++;}mp.put(i,cnt);}if(n>1) mp.put(n,1);
}
//输出
for(Integer key:mp.keySet()){int val = mp.get(key);if(val>0)System.out.println(key+" "+mp.get(key));
}

素数筛

埃氏筛法

求n以内的所有素数

时间复杂度(O(nlogn))

static int[] st;
static int[] primes;
static int cnt;void get_primes(int n){for(int i=2;i<=n;i++){if(st[i]==0){primes[cnt++]=i;for(int j=i+i;j<=n;j+=i)st[j]=1;}}//求素数个数cnt	
}

线性筛

void get_primes(int n)
{for (int i = 2; i <= n; i ++ ){if (!st[i]) primes[cnt ++ ] = i;for (int j = 0; primes[j] <= n / i; j ++ ){st[primes[j] * i] = true;if (i % primes[j] == 0) break;}}
}

求约数

时间复杂度 sqrt(n)

	static ArrayList<Integer> yue = new ArrayList<>();   static void solve(int n){for (int i = 1; i <= n/i; i++) {if(n%i==0){yue.add(i);if(n/i!=i)yue.add(n/i);}}Collections.sort(yue);//约数从小到达排}

求组合数

求C(a,b)

用long存!!!

  • N 在3000以内(题意不用取模)
    static long[][] C = new long[N][N];static void init(){for (int i = 0; i < N; i++) {for (int j = 0; j <= i; j++) {if(j==0) C[i][j] = 1;else C[i][j] = C[i-1][j] + C[i-1][j-1];//对于要对答案取模的时候,在计算组合数的时候就要取模//else C[i][j] = (C[i-1][j] + C[i-1][j-1])%Mod;}}}
  • N在10^8以内、题目说要取模(用逆元求)

    C(a,b) = a!/(b! * (a-b)!) = a! * niyuan(b!) * niyuan((a-b)!)

    由于询问比较多,直接初始化阶乘和阶乘的逆元数组

    递推式:
    n! = (n-1)! * n
    1/(n!) = 1/(n-1)! * 1/n,其中1/n = qpow(n,Mod-2)(费马小定理)

    //jiechen[i] = i!static long[] jiechen = new long[N];//jiechenniyuan[i] = “i!的逆元”static long[] jiechenniyuan = new long[N];//初始化阶乘、阶乘的逆元static void init() {jiechen[0] = 1;jiechenniyuan[0] = 1;for(int i=1;i<N;i++) {jiechen[i] = jiechen[i-1] * i%Mod;jiechenniyuan[i] = jiechenniyuan[i-1] * qpow(i, Mod-2)%Mod;}}//C(a,b) = a!/(b! * (a-b)!) = a! * niyuan(b!) * niyuan((a-b)!)static long C(int a,int b) {long res = 1;res = res * jiechen[a]%Mod;res = res * jiechenniyuan[b]%Mod;res = res * jiechenniyuan[a-b]%Mod;return res;}
https://www.acwing.com/activity/content/code/content/5904493/

扩展欧几里得算法

裴蜀定理

  • 若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,都有ax+by都一定是d的倍数。(充要的)
    特别地,一定存在整数x,y,使ax+by=d成立。

换句话说:

  • 两个整数a,b,方程a*x+b*y=m有解,当且仅当m是gcd(a,b)的倍数(充要)

扩展欧几里得代码:

// 求x, y,使得ax + by = gcd(a, b)
// 扩展欧几里得:求解方程ax+by=gcd(a,b)的解
// x=y′ y=x′−[a/b]*y′
static int x, y;//全局变量,替代引用
int exgcd(int a,int b){if(b==0){x=1,y=0;return a;}int gcd=exgcd(b,a%b);//递归调用int tmp = x;x=y,y=tmp-a/b*y;return gcd;
}//结果说明1.exgcd()的返回值是最大公约数2.最后的(x,y)是方程ax + by = gcd(a,b)的解3.如果exgcd()的结果是1(那么a和b互质,就存在逆元),那么x是a的逆元(x可能是负数,所以答案是getMod(x)

费马小定理

描述:

如果一个数p是质数,并且a不是p的倍数,那么有a^(p-1) = 1 (mod p)。
除以p同余

等价于:(推荐)

如果一个数p是质数,并且a和p互质(等价于gcd(a,p)=1),那么有a^(p-1) = 1 (mod p)

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

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

相关文章

python+Flask+django企业仓库进销存管理信息系统35wiz

Flask提供了更大的灵活性和简单性&#xff0c;适合小型项目和微服务。Django则提供了更多的内置功能&#xff0c;适合大型项目。Flask让开发者更多的控制其组件&#xff0c;而Django则遵循开箱即用的原则 本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行&am…

YOLOv8 推理脚本--置信度保留多位浮点数 特征图可视化

效果 特征图可视化: 4位浮点数: 原始2位浮点数4位浮点数推理 --detect.py 说明 在进行改动前,请大家先阅读下 基础入门篇 | YOLOv8 项目【训练】【验证】【推理】最简单教程 | YOLOv8必看 | 最新更新,直接打印 FPS,mAP50,75,95 ,确保会用我给的推理脚本。 YOLO( ):…

【C++】STL--stackquene

这一节主要学习stack、quene和priority_quene的使用以及模拟实现&#xff0c;最后介绍了容器适配器。 目录 stack的介绍和使用 stack的介绍 stack的使用 stack的模拟实现 queue的介绍和使用 queue的介绍 queue的使用 queue的模拟实现 priority_queue的介绍和使用 pri…

计算机体系结构安全第四次作业——Intel的安全体系结构

一、实现的可能方式 在不改变Intel处理器权限模型的前提下&#xff0c;实现本节课所述的安全体系结构是具有一定挑战性的&#xff0c;但并非不可能。Intel处理器的权限模型主要基于环形权限体系&#xff0c;其中核心组件如CPU、内存管理单元&#xff08;MMU&#xff09;、I/O系…

【漏洞复现】潍微科技-水务信息管理平台 ChangePwd SQL注入漏洞

0x01 产品简介 潍微科技-水务信息管理平台主要帮助水务企业实现水质状态监测、管网运行监控、水厂安全保障、用水实时监控以及排放有效监管,确保居民安全稳定用水、环境有效保护,全面提升水务管理效率。 0x02 漏洞概述 潍微科技-水务信息管理平台 ChangePwd 接口存在SQL注…

训练营第二十天(二叉树 part06)

训练营第二十天&#xff08;二叉树 part06&#xff09; 654.最大二叉树 力扣题目地址(opens new window) 题目 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出…

sed 字符替换时目标内容包含 特殊字符怎么处理

背景 想写一个自动修改配置的脚本&#xff0c;输入一个 mysql jdbc 的连接路径&#xff0c;然后替换目标配置中的模版内容&#xff0c;明明很简单的一个内容&#xff0c;结果卡在了 & 这个符号上。 & 到底是什么特殊字符呢&#xff1f;结论&#xff1a;它代表要替换的…

【中级软件设计师】上午题08-UML(上):类图、对象图、用例图

上午题08-UML 1 UML事物2 UML关系2.1 依赖2.2 关联2.2.1 聚合 &#xff08;空心菱形&#xff09;2.2.2 组合 &#xff08;实心菱形&#xff09; 2.3 泛化 &#xff08;实线三角形&#xff09;2.4 实现 &#xff08;虚线三角形&#xff09;2.5 关联多重度 3 类图4 对象图5 用例图…

vue3 + potree 渲染点云数据记录

potree 官网示例 前置条件&#xff1a; potree 无法直接加载 LAS&#xff0c;LCD&#xff0c;PLY等格式的点云文件, 需要通过 PotreeConverte 转换为 octree 数据格式&#xff0c;前端渲染中加载转换后的 json 格式 格式转换方向 .las ---- potreeConverter ----> .json…

算法练习第15天|226.翻转二叉树

226.翻转二叉树 力扣链接https://leetcode.cn/problems/invert-binary-tree/description/ 题目描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&am…

关于无人机,你必须知道的事!!(科技篇)

飞行器的五脏六腑 电机&#xff1a;无人机的动力单元&#xff0c;俗称“马达”。通过电机转动来驱动螺旋桨旋转&#xff0c;最终让飞机上天。 电调&#xff1a;无人机的动力单元&#xff0c;是接收油门信号并调整电机转速的控制枢纽&#xff0c;俗称电机的“黑屋调教师” 飞…

探索计算机的小数世界:从二进制到无限精度

前言 不知道你是否和我一样&#xff0c;遇到这个情况。在刚开始学习编程。计算0.3-0.20.1这个小学都知道&#xff0c;但是如果你在计算机执行&#xff0c;发现结果并不是0.1 。这个时候会疑问到底是为什么呢。 System.out.println("0.3-0.2"(0.3-0.2)); 0.3-0.20.09…

Linux中home、var、opt、data、swap、根目录空间怎么分配

#Linux中home、var、opt、data、swap、根目录空间怎么分配 在Linux系统中&#xff0c;/home、/var、/opt和/data是几个常见的目录&#xff0c;它们通常用于存储不同类型的文件和数据。合理分配这些目录的空间对于系统的性能和数据管理非常重要。以下是一些关于如何分配这些目录…

算法基础--时间/空间复杂度

目录 前言一、时间复杂度1.1 时间复杂度公式1.2 常见的时间复杂度量级1.3 时间复杂度量级示例1.3.1 常数阶O(1)1.3.2 对数阶O(logN)1.3.3 线性阶O(n)1.3.4 线性对数阶O(nlogN)1.3.5 平方阶O(n)1.3.6 立方阶O(n)、K次方阶O(n^k) 二、空间复杂度2.1 O(1)2.2 O(n)2.3 O(n) 三、常用…

API管理平台:你用的到底是哪个?

Apifox是不开源的&#xff0c;在github的项目只是readme文件&#xff0c;私有化需要付费。当然saas版目前是免费使用的。 一、Swagger 为了让Swagger界面更加美观&#xff0c;有一些项目可以帮助你实现这一目标。以下是一些流行的项目&#xff0c;它们提供了增强的UI和额外的功…

Qt 容器类整理与使用

Qt提供了哪些容器类 Qt 提供了丰富的容器类&#xff0c;这些容器类主要用于存储和管理数据&#xff0c;按照其内部组织结构和功能特性&#xff0c;大致可分为顺序容器和关联容器两大类&#xff1a;顺序容器&#xff1a; QList - 动态数组&#xff0c;支持快速的头部和尾部插入…

OSCP靶场-- Sybaris

OSCP靶场–Sybaris 考点(redis MODULE LOAD命令执行) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.158.93 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-11 04:24 EDT Nmap scan report for 192.168.158.93…

照片转漫画的软件有吗?分享4款热门的软件!

在数字化时代&#xff0c;我们总是追求新鲜、有趣、创意十足的方式来展现自我。其中&#xff0c;将普通照片转化为漫画风格的图像已成为许多年轻人的新宠。这种既能保留原照片中的人物特征&#xff0c;又能赋予其独特艺术气息的方式&#xff0c;让许多人趋之若鹜。那么&#xf…

PHP7垃圾回收算法

前提 本文为了梳理PHP GC工作流程&#xff0c;所以从引用计数、部分标记清除算法做引子&#xff0c;然后介绍PHP GC工作流程,最后介绍性能更高的GC算法 引用计数 概述 引用计数算法中引入了一个概念计数器。计数器代表对象被引用的次数 基本原理 为了记录一个对象有没有被…

APB协议中的PSEL、PSTROB、PENABLE、PREADY这4个信号的作用与用法

在详细探讨APB&#xff08;Advanced Peripheral Bus&#xff09;协议中的这四个信号之前&#xff0c;让我们先简单了解一下APB协议。APB是ARM公司的一种简单但高效的总线协议&#xff0c;主要用于低带宽和低性能需求的外围设备连接&#xff0c;如定时器、接口控制、UART等。它是…