acwing算法全总结-数学知识
快速幂
原题链接:快速幂
ac代码:
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
LL qmi(int a,int b,int p)
{LL res=1%p;while(b)//这里本应该分两次进行,不过只有一次询问{if(b&1)res=res*a%p;//不断得出结果并直接相乘a=a*(LL)a%p;//为了积累下一次幂b>>=1;}return res;
}
int main(){int n;cin>>n;while(n--){int a,b,p;cin>>a>>b>>p;printf("%d\n",qmi(a,b,p));}return 0;
}
这里对方法主题进行逐句分析:
LL res=1%p;
这里为什么要%p呢?
我们可以考虑这个情况:当p=1,b=0时,无论a取何值,循环都不会进入,那么如果这里不对q求余,那么res=1,可是正确答案为res=0;
下面对主要部分做解释:
while(b)//这里本应该分两次进行,不过只有一次询问{if(b&1)res=res*a%p;//不断得出结果并直接相乘a=a*(LL)a%p;//为了积累下一次幂b>>=1;}
那什么是快速幂呢?这里给出一个问题:求 ( a b ) m o d p ; (a^b)mod p; (ab)modp;
如果这里b的数据范围是1e9,计算1e9次,那么会爆tle,所以我们引入了快速幂,快速幂是基于二进制对于算式的优化:
通过优化,我们将o(n)的时间复杂度优化为log(n),
那么我们对这个代码就基本理解了:
if(b&1)res=res*a%p;//不断得出结果并直接相乘
a=a**(LL)a%p;//为了积累下一次幂
b>>=1;
如果b的二进制最小位为1,那么进入进行计算,比如8是100,那么第一位不计算,a在下一句进行累加取余,b去掉最小位,第二位不计算,a继续累乘取余,在第三位进行乘。每次的分步取余是为了防止结果溢出,防止结果错误。
同时注意!res和a都要开long long不然数据过大会溢出
质数筛
题目链接:质数筛线性筛法
ac代码:
#include<iostream>
#include<algorithm>
//https://www.bilibili.com/video/BV1LR4y1Z7pm/?spm_id_from=333.337.search-card.all.click&vd_source=436ccbb3a8f50110aa75654f38e35672
//链接到b站视频
using namespace std;
const int N=1000010;
int primes[N],cnt;
bool st[N];
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;}}
}
int main(){int n;cin>>n;get_primes(n);cout<<cnt<<endl;return 0;
}
朴素筛法时间复杂度很大,我们加以优化,只筛掉质数的倍数,会将时间复杂度降到nloglogn,再次优化,引入欧拉筛,将时间复杂度降低到o(n)

那么欧拉筛为什么能将质数筛优化到线性呢?因为它每个数只筛一次,而无论是埃式筛还是朴素筛,它在筛去的过程中都有重复
下面我们看代码:
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;}}
}
if(!st[i])primes[cnt++]=i; 每次把质数存在primes数组中,然后开始循环遍历数组,每一次把primes[j]*i筛掉,也就是被它的最小质因子筛掉,每次只筛一个,不重复,所以在o(n)的时间内得出结果。
那么这一句呢? ** if(i%primes[j]==0)break;**,这样做的目的是避免重复筛选,即在筛选过程中,只需要考虑能整除当前数 i 的最小质数。因为如果存在一个能整除 i 的质数,那么在之后的迭代中,i 会被标记为非质数,因此不需要再考虑更大的质数能否整除 i。
相关文章:
acwing算法全总结-数学知识
快速幂 原题链接:快速幂 ac代码: #include<iostream> #include<algorithm> using namespace std; typedef long long LL; LL qmi(int a,int b,int p) {LL res1%p;while(b)//这里本应该分两次进行,不过只有一次询问{if(b&1)…...
SpringMVC学习使用
一、SpringMVC简单理解 1.1 Spring与Web环境集成 1.1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(sp…...
10、《文件上传与下载:MultipartFile与断点续传设计》
文件上传与下载:MultipartFile与断点续传设计 一、基础文件上传与MultipartFile解析 1.1 Spring MVC文件上传基础 PostMapping("/upload") public String handleFileUpload(RequestParam("file") MultipartFile file) {if (!file.isEmpty())…...
DeepSeek 本地部署(电脑安装)
1.先安装Ollama 开源框架 网址链接为:Ollama 2.点中间的下载 3.选系统 4.下载好就安装 5.输入命令ollama -v 6.点击Model 7.选如下 8.选版本 9.复杂对应命令 10.控制台粘贴下载 11.就可以问问题啦 12.配置UI界面(在扩展里面输入) 13.配置完即可打开 14.选择刚才安装的就好啦…...
DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析
在人工智能领域,DeepSeek、Kimi、文心一言和通义千问作为国内领先的 AI 大语言模型,各自展现出了独特的特点和优势。本文将从技术基础、应用场景、用户体验和价格与性价比等方面对这四个模型进行对比分析,帮助您更好地了解它们的特点和优势。…...
Docker compose 以及镜像使用
Docker compose 以及镜像使用 高级配置 使用 Docker Compose Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。以下是一个 docker-compose.yml 示例: version: 3 services:web:image: my-appbuild: .ports:- "8000:8000"volumes:- …...
HCIA项目实践--RIP相关原理知识面试问题总结回答
9.4 RIP 9.4.1 补充概念 什么是邻居? 邻居指的是在网络拓扑结构中与某一节点(如路由器)直接相连的其他节点。它们之间可以直接进行通信和数据交互,能互相交换路由信息等,以实现网络中的数据转发和路径选择等功能。&am…...
使用Python进行云计算:AWS、Azure、和Google Cloud的比较
👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行云计算:AWS、Azure、和Google Cloud的比较 随着云计算的普及&am…...
c++ 实现矩阵乘法
矩阵乘法的基本实现方法是三层循环,但不同的循环顺序会影响性能,比如i-j-k和i-k-j的顺序。然后,参考内容里提到了一些优化方法,比如调整循环顺序来提高缓存命中率,使用一维数组存储矩阵,或者利用SIMD指令如…...
无线4G多联机分户计费集中控制系统
拓森无线4G多联机集中控制系统应用于宝龙广场多联机计费集中控制节能改造项目,包括多联机集中控制,分户计费,空调监控管理、告警管理、节能管控、统计报表、能效分析、空调远程开关机等功能。项目的成功实施,不仅提升了维护管理效…...
文字转语音(一)各种实现说明
记录下文字转语音的各种方式及优缺点 目前只了解了调用 Windows PowerShell(System.Speech.Synthesis)、FreeTTS、JACOB(Java COM Bridge)库实现文字转语音。 其他的方式就是顺带记录了解下 Windows PowerShell(System…...
大语言模型多代理协作(MACNET)
大语言模型多代理协作(MACNET) Scaling Large-Language-Model-based Multi-Agent Collaboration 提出多智能体协作网络(MACNET),以探究多智能体协作中增加智能体数量是否存在类似神经缩放定律的规律。研究发现了小世界协作现象和协作缩放定律,为LLM系统资源预测和优化…...
【笛卡尔树】
笛卡尔树 笛卡尔树定义构建性质 习题P6453 [COCI 2008/2009 #4] PERIODNICF1913D Array CollapseP4755 Beautiful Pair[ARC186B] Typical Permutation Descriptor 笛卡尔树 定义 笛卡尔树是一种二叉树,每一个节点由一个键值二元组 ( k , w ) (k,w) (k,w) 构成。要…...
Java堆外内存的高效利用与性能优化
在Java开发中,堆外内存(Direct Memory)是除Java堆以外的内存区域。它允许Java程序直接分配和管理非堆内存,这为高性能的数据处理提供了可能。 1、 什么是堆外内存? 堆外内存,也称为直接内存(D…...
【Unity3D优化】使用ASTC压缩格式优化内存
在Unity3D手游开发中,合理选择纹理压缩格式对于优化内存占用、提高渲染效率至关重要。本文将记录近期在项目内进行的图片压缩格式优化过程,重点介绍从ETC2到ASTC 5x5的优化方案及其带来的收益。 1. 现状分析:从ETC2到ASTC 6x6 block 在项目…...
iptables网络安全服务详细使用
iptables防火墙概念说明 开源的基于数据包过滤的网络安全策略控制工具。 centos6.9 --- 默认防火墙工具软件iptables centos7 --- 默认防火墙工具软件firewalld(zone) iptables主要工作在OSI七层的二、三、四层,如果重新编译内核&…...
MiC建筑引领未来:中建海龙的探索与实践
随着全球城市化进程的加速推进,建筑行业正面临着前所未有的挑战与机遇。如何高效、环保地建造高质量的建筑,成为了行业内外普遍关注的焦点。在此背景下,MiC(Modular Integrated Construction,模块化集成建筑࿰…...
清华精品资料:DeepSeek从入门到精通、DeepSeek赋能职场
今天电脑天空给大家推荐2份清华大学专家编写的DeepSeek的使用手册,分别是《DeepSeek从入门到精通》和《DeepSeek赋能职场》。 《DeepSeek从入门到精通》是一本系统化的技术指南,旨在帮助用户从零基础到精通掌握通用人工智能模型DeepSeek的核心功能与应用…...
Nginx进阶篇 - nginx多进程架构详解
文章目录 1. nginx的应用特点2. nginx多进程架构2.1 nginx多进程模型2.2 master进程的作用2.3 进程控制2.4 worker进程的作用2.5 worker进程处理请求的过程2.6 nginx处理网络事件 1. nginx的应用特点 Nginx是互联网企业使用最为广泛的轻量级高性能Web服务器,其特点是…...
SpringBoot初始化8个常用方法
在 Spring Boot 中,初始化方法通常是在应用程序启动时被调用的,可以用来执行应用启动时的一些准备工作。以下是几种常见的初始化方法: 一、顺序 1. 图解 ┌─────────────────────────────┐│ Spring Boot…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
